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

时间:2011-03-21 12:30:49

标签: iphone ios ipad viewdidappear

请帮忙,如果您有任何经验,我们的时间会越来越厚。

我有这种结构。

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方法?

1 个答案:

答案 0 :(得分:1)

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

是的,Apple确实这样做了(例如,让你将一个UIViewControllers嵌入到选项卡/导航视图控制器中),但是他们就会知道如何去做。

通过将外部视图控制器中的正确消息转发到内部视图控制器,仍然可以实现这一点,但需要非常小心,并且可能不太适合未来。不过,这次可能会省你!即如果你在你的_root中得到一个viewWillAppear,那么将它转发给它的子视图控制器等。如果你设法正确地执行所有出现/消失,旋转,内存管理,那么你就是好的。

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