在我的RecordViewController中,在didSelectRowAtIndexPath内推送一个detailViewController(该继承自UIViewController):

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


出现DetailViewController后,我可以在左上角看到一个Back navigationButton,它会自动弹出当前的视图控制器以返回到先前的ViewController。

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

并且只有当用户做出决定时,当前视图控制器才应消失。

我的问题是,如果我将此代码放入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以获取更多详细信息。

09-10 08:45
查看更多