ios - 如何覆盖后退导航项?

标签 ios ios7 uinavigationitem

在我的 RecordViewController 中,在 didSelectRowAtIndexPath 中,我推送了一个DetailViewController(继承自 UIViewController):

[[self navigationController] pushViewController:detailViewController animated:YES];

一旦 DetailViewController 出现,我可以在左上角看到一个 Back 导航按钮,它会自动弹出当前 View Controller 以返回到上一个 ViewController。

现在我需要显示一个 UIAlertView 并询问用户是否应该保存数据。

只有当用户做出决定时,当前 View Controller 才会消失。

我的问题是,如果我将此代码放入 viewWillDisappear 中,那就已经太晚了。显示 UIAlertView 时我无法停止该过程。这需要在用户按下后退按钮时拦截。

是否有一种方法可以重写来实现此目的?

最佳答案

创建一个 UIBarButtonItem:

UIBarButtonItem * backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle: @"Back"
    style: UIBarButtonItemStyleDone target: self action: @selector(onBackButtonTapped:)];

将其分配给左栏按钮项目:

self.navigationItem.leftBarButtonItem = backBarButtonItem;

实现 onBackButtonTapped API:

- (void) onBackButtonTapped: (id) sender
{
    // Display an UIAlertView
}

您可能想要自定义后退按钮。请查看UIBarButtonItem了解更多详情。

关于ios - 如何覆盖后退导航项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20084521/

相关文章:

ios - 是否可以将训练有素的 sklearn.mixture.GMM 模型与适用于 iOS 的 C++ 一起使用?

ios - 在 iOS 设备的锁屏上添加自定义专辑封面

ios - iOS 7中不显示社交 View 的默认警报

ios - 通过 iCloud 将现有核心数据数据库轻量级迁移到 iOS 7

ios7 - -[UICollectionView _dequeueReusableViewOfKind :withIdentifier:forIndexPath:viewCategory:] in ios 7 中的断言失败

objective-c - 解析 JSON 时出错

ios - subview 添加到导航栏 ios

ios - UIBarButtonItem 不显示

iOS - 方向改变时导航栏不显示大标题

ios - 如何在 iOS 应用程序中手动设置 "Back"目的地