viewDidLoad 在调用 popViewController Animated 之后每次都会被调用:
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
时都会调用 viewDidLoad
(在 ViewControllerTwo
中)。 viewDidLoad
被调用是因为我正在使用 [self.navigationController popViewControllerAnimated:YES]
,我说得对吗?还是另有原因?
如果我对你的理解是正确的,你会看到在你推送到的视图控制器上调用了 viewDidLoad。 (ViewControllerTwo
)。如果您从 ViewControllerOne
推送到 ViewControllerTwo
,则会调用 ViewControllerTwo
的 viewDidLoad。
如果你然后点击后退按钮弹出 ViewControllerTwo
,return 到 ViewControllerOne
,然后再次推送到 ViewControllerTwo
,你会看到 viewDidLoad
第二次调用。
这是预期的行为。 Push segues(以及除 unwind segues 之外的所有其他 segues)创建它们所呈现的视图控制器的新实例。
同样,popping/dismissing 释放您要离开的视图控制器。
当您从导航堆栈中弹出视图控制器时,它管理的视图将被释放(或卸载)。因此,当您再次打开ViewControllerTwo
时,必须重新加载该视图。这就是 viewDidLoad
在您的案例中被多次调用的原因。
我有一个名为 ViewControllerOne
的 vc,当用户点击 UITableViewCell
我调用 push segue
并导航到 ViewControllerTwo
。在 ViewControllerTwo
中,我隐藏了导航栏,因此我创建了一个自定义后退按钮:
- (IBAction)backBttn:(id)sender {
[self.navigationController popViewControllerAnimated:YES];
}
完美运行,但每次我导航回 ViewControllerOne
并再次打开 ViewControllerTwo
时都会调用 viewDidLoad
(在 ViewControllerTwo
中)。 viewDidLoad
被调用是因为我正在使用 [self.navigationController popViewControllerAnimated:YES]
,我说得对吗?还是另有原因?
如果我对你的理解是正确的,你会看到在你推送到的视图控制器上调用了 viewDidLoad。 (ViewControllerTwo
)。如果您从 ViewControllerOne
推送到 ViewControllerTwo
,则会调用 ViewControllerTwo
的 viewDidLoad。
如果你然后点击后退按钮弹出 ViewControllerTwo
,return 到 ViewControllerOne
,然后再次推送到 ViewControllerTwo
,你会看到 viewDidLoad
第二次调用。
这是预期的行为。 Push segues(以及除 unwind segues 之外的所有其他 segues)创建它们所呈现的视图控制器的新实例。
同样,popping/dismissing 释放您要离开的视图控制器。
当您从导航堆栈中弹出视图控制器时,它管理的视图将被释放(或卸载)。因此,当您再次打开ViewControllerTwo
时,必须重新加载该视图。这就是 viewDidLoad
在您的案例中被多次调用的原因。