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

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

【问题讨论】:

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

标签: ios objective-c uinavigationcontroller


【解决方案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 方法上,他可以检查用户数据并决定是否允许用户返回。
  • 如果你修改答案,它会对提问者有用
猜你喜欢
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 2021-09-08
  • 2015-02-18
相关资源
最近更新 更多