Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么弹出到根视图控制器有时会导致调用viewDidLoad?_Ios - Fatal编程技术网

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

Ios 为什么弹出到根视图控制器有时会导致调用viewDidLoad?,ios,Ios,我有一个基于导航的应用程序,在子视图中有一个按钮,点击该按钮会调用popToRootViewController方法 -(IBAction)popToRootViewController { [self.navigationController popToRootViewControllerAnimated:YES]; } 这将导致调用rootViewController的viewWillAspect方法,大多数情况下都会发生这种情况。但是,有时会调用rootViewControlle

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

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

这将导致调用rootViewController的viewWillAspect方法,大多数情况下都会发生这种情况。但是,有时会调用rootViewController的viewDidLoad。我找不到背后的原因。有人知道为什么有时会调用viewDidLoad吗?

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


第一次加载视图控制器的视图时,会调用一次viewDidLoad

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


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

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