阻止用户返回 NavigationController

Posted

技术标签:

【中文标题】阻止用户返回 NavigationController【英文标题】:Block user going back in NavigationController 【发布时间】:2016-12-08 05:08:39 【问题描述】:

我在导航控制器中有一个视图。当用户按下后退按钮时,我需要检查他在视图中选择的数据是否正确。如果是我允许他返回,如果不是,我会显示他犯错的通知,并且允许他留在这个视图中并且不允许返回。我尝试在 viewWillDisappear 中执行此操作,但我的代码没有以正确的方式工作。我该如何组织这样的事情?

【问题讨论】:

如何通过网络或本地检查代码中的数据是否正确? 你有自定义后退按钮吗?如果是,那么为什么不将逻辑放入 BackButton 操作中。 你如何编写代码返回:使用 segue 或使用 popviewcontroller 我没有自定义后退按钮。数据是本地的。用户只选择 NSSet 的单元格,NSSet 计数不能超过常数。我没有写任何代码返回,一切都是由故事板自动完成的。 条件满足后使用segue名称移动。 【参考方案1】:

一种选择是实现您自己的自定义后退按钮。将以下代码添加到您的 viewDidLoad 方法中:

    self.navigationItem.hidesBackButton = YES;
    UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(back:)];
    self.navigationItem.leftBarButtonItem = newBackButton;

你的选择器方法是-

- (void) back:(UIBarButtonItem *)sender 

        if(/*your condition satisfy*/) 
          [self.navigationController popViewControllerAnimated:YES];
        
        else 
          /** Popup your alert here */
        

    

【讨论】:

你在哪里检查条件,你可以根据问题修改答案 在 - (void) back:(UIBarButtonItem *)sender 方法上,他可以检查用户数据并决定是否允许用户返回。 如果你修改答案,它会对提问者有用

以上是关于阻止用户返回 NavigationController的主要内容,如果未能解决你的问题,请参考以下文章

阻止用户在 React Native 中成功登录后返回登录屏幕

阻止用户返回并查看以前提交的表单Rails

iOS开发之--单个页面禁止右滑返回操作

阻止导航控制器导航并要求用户确认

Chromecast - 阻止 loadMedia 直到前一个返回

在返回 AJAX 响应之前阻止 Web 浏览器关闭 [重复]