0

我有一个基于导航的应用程序,在子视图中我有一个按钮,点击它会调用 popToRootViewController 方法。

-(IBAction)popToRootViewController
{
    [self.navigationController popToRootViewControllerAnimated:YES];
}

这应该会导致调用 rootViewController 的 viewWillAppear 方法,并且在大多数情况下都会发生这种情况。但是,偶尔会调用 rootViewController 的 viewDidLoad。我无法找到其背后的原因。有人知道为什么有时会调用 viewDidLoad 吗?

4

3 回答 3

1

在 iOS 5 及更早版本中,系统可能会在内存不足时卸载视图:

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ViewLoadingandUnloading/ViewLoadingandUnloading.html

于 2012-10-22T10:46:29.557 回答
0

viewDidLoad在第一次加载视图控制器的视图时调用一次。

viewWillAppear将在第一次加载视图控制器的视图时在 viewDidLoad 方法之后调用。

现在,当您在 navigationController 中推送或弹出控制器时,肯定会调用可见控制器的 viewWillApper方法。

于 2012-10-22T10:46:34.330 回答
0

viewDidLoad,顾名思义,在视图控制器加载其视图之后调用。如果视图控制器不再是最前面的控制器,它可能会释放其视图以节省内存(它曾经调用过viewWillUnloadviewDidUnload现在在 iOS 6 中已弃用)。如果发生这种情况,当它再次回到前面时(或每当调用thecontroller.view),它将重新创建视图(如果不是基于 Nib 的,它将调用loadView),然后调用viewDidLoad.

于 2012-10-22T10:46:38.630 回答