UINavigationController 问题。视图控制器的 viewWillDisappear/viewDidDisappear 在应用程序启动时不调用

Posted

技术标签:

【中文标题】UINavigationController 问题。视图控制器的 viewWillDisappear/viewDidDisappear 在应用程序启动时不调用【英文标题】:UINavigationController issue. viewWillDisappear/viewDidDisappear of view controllers not call on application startup 【发布时间】:2010-10-18 15:11:13 【问题描述】:

我正在编写一个应用程序(适用于 iPhone),它使用 UINavigationController 通过 pushViewController 显示不同的视图。我试图在应用程序启动时立即推送多个 UIViewController 而无需用户交互。当用户打开应用程序时,他们会看到一个顶部有一个导航栏的屏幕,上面已经有一个后退按钮。

我遇到的问题是,如果在应用程序启动后立即将另一个 ViewController 推到其上而无需用户交互,则 ViewController 的 viewWillDisappear 和 viewDidDisappear 并不总是被调用。如果被推到顶部的 ViewController 是由用户通过单击按钮激活的,那么被覆盖的视图的 viewWillDisappear 和 viewDidDisappear 总是会被调用。

注意。被覆盖的视图控制器的 viewWillAppear 和 viewDidAppear 总是被调用。

在遇到问题的代码中,我在前一个 ViewController 的 viewDidAppear 中推送新的视图控制器。

有人知道我可能做错了什么,或者我看到的行为是否符合预期?

【问题讨论】:

【参考方案1】:

我遇到的问题是,如果在应用程序启动时立即将另一个 ViewController 推到它上面而无需用户交互,则 ViewController 的 viewWillDisappear 和 viewDidDisappear 并不总是被调用。

对我来说听起来很明智。毕竟,“被覆盖”的视图从未出现在屏幕上,因此它不会消失。我会期待这种行为。

【讨论】:

viewWillAppear 和 viewDidAppear 被覆盖的视图控制器总是被执行,所以我希望 viewWillDisappear 和 viewDidDisappear 也会被调用。是我设置的东西导致 viewWillAppear/viewDidAppear 在不应该被调用的时候被调用吗?

以上是关于UINavigationController 问题。视图控制器的 viewWillDisappear/viewDidDisappear 在应用程序启动时不调用的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController:willShowViewController 问题

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

向 UINavigationController 添加按钮的问题

UITabBarController 问题中的 UINavigationController

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?

iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?