我在处理遗留应用程序,发现我的 view[Will/Did]Disappear
方法并不总是正确触发。
情况是,我有一个(自定义)UIViewController
在 AppDelegate 中设置为 rootViewController。这个 rootViewController 有一个 UINavigationController
,上面有两个 View Controller 。当用户按下主页按钮时,用户将注销。当他稍后返回应用程序时,应用程序调用 [UINavigationController popToRootViewControllerAnimated:YES]
,然后显示用于登录的模态 UIViewController
。
问题是:当我在 UINavigationController
上正常推送/弹出时,我的 viewWillDisappear
方法被正确调用。但是当我使用 popToRootViewControllerAnimated:
方法时,不会在弹出的任何 viewController 上调用 viewWillDisappear
。
网上查了一下,只给出了两个可能的原因:
- If using a UINavigationController as a subview, you must call
view[Will/Did]Disappear
yourself - Not calling the proper super methods
这些建议都不是我的应用程序的情况。我不知道去哪里看。有人对应用程序中的错误有什么建议吗?
最佳答案
View 可能不在屏幕上。它必须在屏幕上(可见)才能调用 viewWillDisappear:
方法。如果它从后台返回,则不可见。
您可以尝试使用 willMoveToParentViewController:
,当 View Controller 从其父 View Controller 中移除时调用它。
关于ios - 调用 popToRootViewControllerAnimated 时未调用 viewWillDisappear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17954402/