Xcode:检测导航控制器何时实施"后退按钮"被压了

时间:2014-09-17 18:37:11

标签: ios uinavigationcontroller

方案

我有一个带导航控制器的应用程序。当导航控制器将另一个控制器推入堆栈时,在屏幕的左上角显示后退按钮“<(最后一个视图控制器的标题)”。

我需要什么

我需要之类的东西(伪代码)......

-(void)detectedBackButtonWasPushed {

    NSLog(@"Back Button Pressed");

    //Do what I need done

}

问题

因为这个按钮是由导航控制器创建的,而我没有在故事板中创建这个按钮,如何将后退按钮“连接”到这样的方法?< /强>

我尝试过Oleg的例子

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

    UIViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"notification"];

    if (viewController == vc) {

        NSLog(@"BACK BUTTON PRESSED");
    }
}

这是我应该怎么做的?因为这不起作用。

2 个答案:

答案 0 :(得分:4)

使用viewWillDisappear来检测此内容。

-(void) viewWillDisappear:(BOOL)animated 
{ 
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) 
    { 
        [self backButtonPressed]; 
        [self.navigationController popViewControllerAnimated:NO]; 
    } 

    [super viewWillDisappear:animated]; 
} 

-(void)backButtonPressed 
{ 
   NSLog(@"YEA"); 
}

答案 1 :(得分:0)

以前,我已经通过将navigationBar leftItem设置为一个带有自定义选择器的后退按钮来解决这个问题,该选择器将视图与其他任何需要做的事情一起解除。

我可能还建议查看后退按钮项并添加目标:触摸时调用的自我。