为什么弹出到根视图控制器导致有时调用viewDidLoad?

时间:2012-10-22 10:39:10

标签: ios

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

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

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

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

第一次加载视图控制器视图时,将调用

viewDidLoad

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

viewWillAppear

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

答案 2 :(得分:0)

顾名思义,

viewDidLoad在视图控制器加载其视图后立即调用。如果视图控制器不再是最前面的控制器,它可以释放其视图以节省内存(并且它曾用于调用{6}中已弃用的viewWillUnloadviewDidUnload。如果发生这种情况,当它再次出现时(或任何事情调用thecontroller.view),它将重新创建视图(如果不是基于Nib,它将调用loadView),然后调用{{ 1}}。