我有一个名为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)将创建它们所呈现的视图控制器的新实例。

同样,弹出/关闭会取消分配您要离开的视图控制器。

10-08 02:44