ios - 在导航 Controller 中设置后退按钮的操作

标签 ios iphone cocoa-touch uinavigationcontroller uibarbuttonitem

我正在尝试覆盖导航 Controller 中后退按钮的默认操作。我已经为自定义按钮提供了一个目标操作。奇怪的是,当通过后退按钮属性分配它时,它不会注意它们,它只是弹出当前 View 并返回到根:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
                                  initWithTitle: @"Servers" 
                                  style:UIBarButtonItemStylePlain 
                                  target:self 
                                  action:@selector(home)];
self.navigationItem.backBarButtonItem = backButton;

一旦我通过 navigationItem 上的 leftBarButtonItem 设置它,它就会调用我的操作,但是按钮看起来像一个普通的圆形按钮,而不是带箭头的返回按钮:

self.navigationItem.leftBarButtonItem = backButton;

如何让它在返回 Root View 之前调用我的自定义操作?有没有办法覆盖默认的后退操作,或者是否有一个方法在离开 View 时总是被调用(viewDidUnload 不会这样做)?

最佳答案

尝试将其放入要检测按下的 View Controller 中:

-(void) viewWillDisappear:(BOOL)animated {
    if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) {
       // back button was pressed.  We know this is true because self is no longer
       // in the navigation stack.  
    }
    [super viewWillDisappear:animated];
}

关于ios - 在导航 Controller 中设置后退按钮的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1184474/

相关文章:

ios - 给定文本和字体,如何计算 UIButton 的宽度和高度?

iOS 表格 - iPad 和 iPhone 上的相同代码不同颜色

iphone - 在触摸事件中如何获取所有激活的像素?

objective-c - 在另一个类的应用程序委托(delegate)中使用 NSMutableArray

ios - 渐变颜色随内容 View 的高度变化

Objective-C:为什么这个函数名会引起警告?

ios - 将带有部分的大文本文件保存到核心数据属性

ios - 保存复选框值

ios - 如何将 html 表单加载到 webview 或 safari?

iphone - iPhone 5横向模式下,导航栏右侧的按钮停止工作,如何解决?