阻止导航控制器导航并要求用户确认
Posted
技术标签:
【中文标题】阻止导航控制器导航并要求用户确认【英文标题】:Block a navigation controller from navigating and ask for user confirmation 【发布时间】:2011-06-12 00:22:58 【问题描述】:我有一个UITableViewController
,它使用didSelectRowAtIndexPath:
来用initWithNibName:
初始化一个视图控制器。用户可以返回表格视图,但我想执行 if/else 并显示警报视图以确认用户是否要返回表格视图。我不知道从哪里开始。
简而言之,我想自定义返回按钮。
【问题讨论】:
【参考方案1】:你不能创建一个UIBarButtonItem
实例并将其分配给视图控制器的导航项吗?像这样的,
UIBarButtonItem * backButton = [[[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(backButtonPressed:)] autorelease];
self.navigationItem.leftBarButtonItem = backButton;
然后在backButtonPressed:
中,触发警报视图。
- (void)backButtonPressed:(id)sender
// Trigger an alert view.
根据用户的选择,您可以弹出或不弹出视图控制器。
【讨论】:
太棒了!这就是我需要的。我设法自定义按钮并且触发器工作!但是我应该在代码中添加什么让它像正常的后退按钮一样工作?因为现在它再也回不去了。【参考方案2】:返回用户的按钮是一个IBAction(或者它是您在以编程方式设置按钮时定义的方法),因此您可以将here中的代码添加到IBAction中,并将返回的代码放在
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
【讨论】:
这似乎可以阻止导航控制器导航,但我希望它反过来。 tableviewcontroller 使用navigationcontroller 来初始化视图控制器。我想在它返回 tableview 时抓住它。谢谢。 为什么要在它返回时抓住它?当用户点击按钮时,您会想要抓住它,就像在您原来的问题和标题中一样。 导航控制器初始化一个视图控制器,用户可以在其中进行更改。我想检查用户是否想在“返回”代码执行之前保存/放弃更改。 你又一次失败了。可能我的回答不够清楚。当用户点击后退按钮时,有一个方法会被调用,它会转到上一个视图,而不是让它调用一个警报视图,并使用我上面发布的那个方法来检查“确定”按下去上一个.查看。以上是关于阻止导航控制器导航并要求用户确认的主要内容,如果未能解决你的问题,请参考以下文章