2013-04-05 75 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

相關問題