为什么viewDidAppear/viewWillAppear不会在嵌套结构中调用?

问题描述:

请帮忙,如果您有任何经验,我们的时间会越来越厚。为什么viewDidAppear/viewWillAppear不会在嵌套结构中调用?

我有这样的结构。

AppDelegate... 
...Owns a _root ViewController (its view added to window) 
...what owns the _main ViewController (its view added to _root's view) 
...that has a Navigation controller (its view added to _main's view) 
...then different viewControllers travels in this navigation stack. 

但viewDidAppear/viewWillAppear中的方法没有得到所谓的在最里面的观点。我不知道为什么。

当我阅读文档时,它说“添加到窗口时”。他们是否与Windows一起工作?不要这样想。我该怎么办?为什么不调用这些CRUTIAL方法?

+0

希望这有助于http://*.com/questions/3560669/viewwillappear-viewdidappear-not-being-called-not-firing – visakh7 2011-03-21 12:39:54

框架不允许嵌套视图控制器。

是的,苹果公司做到了这一点(例如,让你将一个UIViewControllers嵌入到标签页/导航视图控制器中),但是他们会知道如何去做。

通过从外部视图控制器向内部视图控制器转发正确的消息仍然是可能的,但它需要非常小心,并且可能不是很有前途。不过这次可能会救你!即如果你在你的_root中看到了一个viewWillAppear,那么将它转发给它的子视图控制器等等。如果你设法正确地对所有的外观/消失,旋转,内存管理进行操作,那么你就很好。

两年过去了,现在支持嵌套视图控制器:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html#//apple_ref/doc/uid/TP40007457-CH18-SW6

+0

我明白了。所以我的桌面viewController也是错误的设计?它是一个拥有许多_thumbnailGroup viewController的viewController,它有许多_thumbnailStack viewController具有许多小_thumbnail viewController。所以所有的内部对象应该是简单的UIView子类? – Geri 2011-03-21 14:04:21

+0

感谢!我删除了_root viewController,所有的逻辑都到了_main viewController,所以现在调用了subControllers的委托方法。 – Geri 2011-03-21 14:33:42

+0

是的,UIView在一个由视图控制器管理的UIView中通常会这样做。不幸的是,有时候你会需要一点,这是麻烦开始的时候。祝你好运,重新设计。 – 2011-03-21 15:34:42