【问题标题】:Block a navigation controller from navigating and ask for user confirmation阻止导航控制器导航并要求用户确认
【发布时间】:2011-06-12 00:22:58
【问题描述】:

我有一个UITableViewController,它使用didSelectRowAtIndexPath: 来用initWithNibName: 初始化一个视图控制器。用户可以返回表格视图,但我想执行 if/else 并显示警报视图以确认用户是否要返回表格视图。我不知道从哪里开始。

简而言之,我想自定义返回按钮。

【问题讨论】:

    标签: objective-c ios cocoa-touch uinavigationcontroller uitableview


    【解决方案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 时抓住它。谢谢。
    • 为什么要在它返回时抓住它?当用户点击按钮时,您会想要抓住它,就像在您原来的问题和标题中一样。
    • 导航控制器初始化一个视图控制器,用户可以在其中进行更改。我想检查用户是否想在“返回”代码执行之前保存/放弃更改。
    • 你又一次失败了。可能我的回答不够清楚。当用户点击后退按钮时,有一个方法会被调用,它会转到上一个视图,而不是让它调用一个警报视图,并使用我上面发布的那个方法来检查“确定”按下去上一个.查看。
    猜你喜欢
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 2013-02-01
    相关资源
    最近更新 更多