![](/img/trans.png)
[英]viewDidLoad() is called every time after dismiss() of UIImagePickerController()
[英]viewDidLoad getting called every time after calling popViewControllerAnimated:
我有一个名为ViewControllerOne
的vc,当用户点击UITableViewCell
我调用了一个push segue
并导航到ViewControllerTwo
。 在ViewControllerTwo
我隐藏了导航栏,因此创建了一个自定义的后退按钮:
- (IBAction)backBttn:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
可以正常工作,但是每次导航回到ViewControllerOne
并再次打开ViewControllerTwo
时,都会在ViewControllerTwo
调用viewDidLoad
。 我正确调用viewDidLoad
是因为我正在使用[self.navigationController popViewControllerAnimated:YES]
吗? 还是必须有另一个原因?
如果我理解正确,那么您会看到正在推送到的视图控制器上调用了viewDidLoad。 ( ViewControllerTwo
)。 如果从ViewControllerOne
推送到ViewControllerTwo
,则会调用ViewControllerTwo
的viewDidLoad。
如果然后单击后退按钮以弹出ViewControllerTwo
,返回到ViewControllerOne
,然后再次推到ViewControllerTwo
,则会看到第二次调用viewDidLoad
。
这是预期的行为。 推式Segue(以及展开式Segue以外的所有其他Segue)将创建它们所呈现的视图控制器的新实例。
同样,弹出/关闭会取消分配您要离开的视图控制器。
从导航堆栈中弹出视图控制器时,它所管理的视图将被释放(或卸载)。 因此,当再次打开ViewControllerTwo
时,必须再次加载视图。 这就是在您的情况下多次调用viewDidLoad
原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.