我有一个名为ViewControllerOne
的vc,当用户点击UITableViewCell
时,我将其称为push segue
并导航至ViewControllerTwo
。在ViewControllerTwo
中,我隐藏了导航栏,因此创建了一个自定义的后退按钮:
- (IBAction)backBttn:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
效果很好,但是每次导航回
viewDidLoad
并再次打开ViewControllerTwo
时,都会调用ViewControllerOne
(在ViewControllerTwo
中)。我使用viewDidLoad
会调用[self.navigationController popViewControllerAnimated:YES]
对吗?还是一定有其他原因? 最佳答案
如果我理解正确,那么您会看到正在推送到的视图控制器上调用了viewDidLoad。 (ViewControllerTwo
)。如果从ViewControllerOne
推送到ViewControllerTwo
,则会调用ViewControllerTwo
的viewDidLoad。
如果然后单击后退按钮以弹出ViewControllerTwo
,返回到ViewControllerOne
,然后再次按下ViewControllerTwo
,您会看到viewDidLoad
再次被调用。
这是预期的行为。推式Segue(以及展开式Segue以外的所有其他Segue)将创建它们所呈现的视图控制器的新实例。
同样,弹出/关闭会取消分配您要离开的视图控制器。