调用viewDidLoad,不调用viewWillAppear,视图不会出现在屏幕上

Cor*_*oyd 7 iphone cocoa-touch uikit

更新

已经提到,不会根据文档调用viewWillAppear和viewDidAppear.但是,我在这些方法中不执行初始化,也没有向视图添加UI元素.

我只是用它们来设置断点来尝试调试它.

还有其他想法吗?


原始问题

我很难过.我正在重构一些代码,并遇到了一些奇怪的行为....

我在没有nib的情况下初始化viewController A并以编程方式设置视图.

调用控制器A中的viewDidLoad.

在viewController A的viewDidLoad里面,我从一个nib初始化viewController B.

我将viewControllerB.view添加为viewControllerA.view的子视图

调用控制器B的viewDidload.


然后它变得奇怪:

  1. viewController B的viewWillAppear和viewDidAppear 永远不会被调用.

  2. viewControllerB.view 永远不会在屏幕上显示它.

  3. 没有错误.


我查过的东西:

viewControllerBs Nib的名称是正确的.

viewControllerB的视图出口连接到视图.

viewControllerB及其视图都是非零的.

最重要的是,SDK [编辑] beta 5中的一切都很棒!

有任何想法吗?它必须是愚蠢的东西..

Ram*_*min 21

如果视图控制器通过代码添加到视图层次结构中,则视图控制器将不会获取viewWillAppear(或viewDidAppear)消息.如果您自己添加它,您必须自己向视图控制器发送消息.

  • 谢谢,这有助于我理解为什么没有调用viewWillAppears/didAppears.但问题仍然存在 (2认同)

Cor*_*oyd 0

结束此事:

我一直找不到解决方案,但从那时起 SDK 3.0 成为标准,这一点就变得毫无意义了。该代码在当前版本的 SDK 中可以正常工作。