为什么 viewDidAppear 没有被触发?

2024-03-05

我有一个根视图控制器,它在其 viewDidLoad 方法的索引 0 处插入子视图。

我试图让子视图成为firstResponder,但根据我的理解,只能在子视图的viewDidAppear 方法中执行此操作。

这是我添加到根视图控制器的 viewDidLoad 方法中的代码行:

        [self.view insertSubview: subViewController.view atIndex: 0];

subviewcontroller 有一个 xib,subViewController.xib,它在运行时正确显示。然而,subViewController 的 viewDidAppear 不会被触发。

知道为什么会发生这种情况吗?知道如何解决这个问题 - 除了手动调用 viewDidAppear (这样做会导致无法成为firstResponder)?

thanks,

mbotta


你必须推动视图控制器到导航堆栈以便调用它的委托方法。将视图控制器的视图添加到子视图数组不会调用它们。您应该做的第一件事是阅读查看 Apple 的控制器编程指南 http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/NavigationControllers/NavigationControllers.html#//apple_ref/doc/uid/TP40007457-CH103-SW1因为这将使您免于因以非标准方式执行此操作而造成的一些麻烦。

不要将视图添加到根视图控制器子视图,而是执行以下操作:

SubviewController *controller = [[SubviewController alloc] init];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;

现在您的委托方法将被调用。但是,如果您没有导航控制器作为根视图控制器,则这将不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 viewDidAppear 没有被触发? 的相关文章

随机推荐