ViewController的生命周期UINavigationController

我有一个UIViewControllers数组,我在UINavigationController的根视图控制器中显示...我有一个我推入堆栈的控制器的问题。每次viewDidLoad需要呈现一个UIImagePickerController,但是只有在第一次push时才会这样做。为了解决这个问题我在我的根视图控制器实现UINavigationControllerDelegate:ViewController的生命周期UINavigationController

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 

[viewController viewDidAppear:animated];

}

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

[viewController viewWillAppear:animated];

}

的问题是它调用这些消息的第一推两次......否则将是巨大的。我错过了什么?

回答:

您可能想在viewDidAppear中显示UIImagePickerController:而不是viewDidLoad :.由于您将视图控制器保存在一个数组中,因此它们仅实例化一次,因此viewDidLoad:很可能只会在每个视图控制器上调用一次。 viewDidAppear:每次推送或呈现视图控制器时都会调用。

如果你的应用程序进入低内存的情况,有可能viewDidUnload:会在某个时候被调用,导致viewDidLoad:在稍后的某个点再次被调用,但你不能依赖这个。

以上是 ViewController的生命周期UINavigationController 的全部内容, 来源链接: utcz.com/qa/263704.html

回到顶部