如何判断导航控制器堆栈中何时按下后退按钮

时间:2010-03-29 21:20:28

标签: iphone objective-c uinavigationcontroller

是否可以检查UINavigationController堆栈中何时按下后退按钮?我尝试将一个动作和目标添加到self.navigationItem.backBarButtonItem无济于事。

有人有任何解决方案吗?

2 个答案:

答案 0 :(得分:0)

你可以试试我的方式:

在ViewController中写入:

UIBarButtonItem *backBt = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"imageNameOfBackButton"] style:UIBarButtonItemStyleBordered target:self action:@selector(backBt_touch:)];
self.navigationItem.leftBarButtonItem = backBt;

行动方法:

- (void)backBt_touch:(id)sender {
  [self.navigationController popViewControllerAnimated:YES];
}

你必须拍一张你想要的后退按钮的照片。

弹出viewController时隐藏按钮的动画与iOS的动画不同!

P / s:enter image description here 我从模拟器中得到它。希望它有用! :)

答案 1 :(得分:-1)

实现此目的的一种方法是覆盖按下后退按钮时可见的UIViewController中的viewWillDisappear

- (void)viewWillDisappear:(BOOL)animated {
    if (self.isMovingFromParentViewController) {
        // handle back button press
    }
}

显然这并没有直接拦截后退按钮本身的按键,但它让你有机会在那时执行逻辑。