0

我有一个UITableViewController,它使用didSelectRowAtIndexPath:初始化视图控制器initWithNibName:。用户可以返回到表格视图,但我想执行一个if/else并显示警报视图以确认用户是否想要返回到表格视图。我没有线索从哪里开始。阻止导航控制器导航并要求用户确认

总之,我想定制后退按钮。

回答

3

难道你不能创建一个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. 
} 

根据用户选择,您可以弹出视图控制器或不弹出视图控制器。

+0

太棒了!那是我需要的。我设法定制了按钮,触发器工作正常!但是我在代码中添加了哪些功能才能像普通的后退按钮那样工作?因为现在它不再回来了。 – 2011-06-12 04:29:06

+0

我想通了。非常感谢! – 2011-06-12 04:49:29

0

返回用户是IBAction为(或者是你定义的方法,当你设置的按钮了编程),这样你就可以从here添加代码到IBAction为,把代码

返回按钮
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
+0

似乎它会阻止导航控制器导航,但我希望它的另一种方式。 tableviewcontroller使用navigationcontroller来初始化视图控制器。我想在它返回到tableview时捕获它。谢谢。 – 2011-06-12 01:48:57

+0

为什么你想在它返回时捕捉它?当用户点击按钮时,您会希望看到它,就像在原始问题和标题中一样。 – 2011-06-12 02:16:52

+0

导航控制器位于视图控制器中,用户可以在其中进行更改。我想检查用户是否想在执行“后退”代码之前保存/放弃更改。 – 2011-06-12 02:26:12