2011-03-09 61 views
7

我想要在用戶按下我的UINavigationController上的後退按鈕時執行某個操作,當它抵達某個UIViewController時。如何獲取UINavigationController中彈出視圖的通知?

不幸的是,它看起來像UINavigationControllerDelegate沒有任何方法來獲取視圖彈出的通知。

作爲解決方法,我現在在viewDidDisappear方法中使用了我的操作,只有當animatedYES時纔會觸發該操作。這有效,但有點難看。

我該如何正確地做到這一點?

+0

使用viewWillDisappear烏拉圭回合動作如果u想以前知道 – 2011-04-06 17:01:16

回答

0

您可以調用一個委託方法時viewWillDisappear或viewWillAppear中某些的UIViewController設定邏輯。

4

如果控制器在堆棧中向下一個參考,一個在這一個被彈出,這將表明,可以作爲一個代表登記,並檢查它通過

navigationController:willShowViewController:animated: 
14

的處理最常用的方法來自導航視圖控制器(以及模式)的流行音樂正在爲您的視圖控制器實現viewWillDisappear

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    if (self.isMovingFromParentViewController || self.isBeingDismissed) { 
     // This view controller is being popped or dismissed 
    } 
} 
1

你可以觀察到UINavigationControllerDelegate和檢查,如果轉換將發生:

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController 
         animated:(BOOL)animated 
    { 
     if([navigationController.viewControllers containsObject:self]) 
     { 
      NSLog(@"push"); 
     } 
     else 
     { 
      NSLog(@"pop"); 
     } 
    } 
+0

如果你有一個的UITabBarController,你應該使用這個解決方案,因爲每次更改當前選項卡索引時,都會調用viewWillDisappear。 – FouZ 2017-06-13 17:41:42

相關問題