2011-03-09 60 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

相关问题