2013-04-05 51 views
7

我有2个视图控制器与导航控制器。 当我在第二个中使用[self.navigationController popViewControllerAnimated:YES];时 - 第一个会打开,但viewDidLoad中的方法不会被调用。在这种情况下,第一个控制器中调用的方法是什么?ios中点击后退按钮后调用什么方法

+0

该视图已经加载,它们不会卸载直到它们弹出。如果你是新的,不要使用ARC,只是我的建议。 – 2013-07-13 00:53:32

+0

另请参阅:http://stackoverflow.com/questions/1557290/how-to-trap-the-back-button-event – Senseful 2014-01-31 19:45:01

回答

23

导航控制器将其在屏幕上查看之前发送viewWillAppear:到一个视图控制器和viewDidAppear:后。

里面的viewWillAppear:viewDidAppear:,视图控制器可以检查self.isMovingToParentViewController。如果isMovingToParentViewControllerYES,则视图控制器首先被添加到导航控制器(可能是因为它是导航控制器的根视图控制器,或者是因为它正在被推动)。如果isMovingToParentViewControllerNO,则视图控制器已经在导航控制器的堆栈中,并且正在弹出另一个视图控制器以显示它。

阅读“Handling View-Related Notifications” in the UIViewController class reference

+2

与iOS合作三年后,我仍然不知道这... – Nailer 2015-03-12 10:27:03

1

在这种情况下viewWillAppear方法将被调用。

-(void)viewWillAppear:(BOOL)animated 
{ 

} 
+0

谢谢你!现在我看到如何做到这一点! – ShurupuS 2013-04-05 09:04:47

+0

不要忘记打电话给'[super viewWillAppear:animated];'! :) – yujean 2015-03-27 18:26:35

相关问题