繁体   English   中英

每次调用popViewControllerAnimated后都会调用viewDidLoad:

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM