【问题标题】:Disable back navigation for single ViewController禁用单个 ViewController 的后退导航
【发布时间】:2016-10-30 10:16:33
【问题描述】:

我有以下 VC:

中心的VC是“登录”屏幕,如果用户被授权,它只是将用户重定向到标签栏控制器。

我想禁止从 TabBarController 中的任何 VC 返回 Login VC(使用“返回”按钮和滑动)。

如何做到这一点?

【问题讨论】:

    标签: ios xcode uinavigationcontroller uitabbarcontroller segue


    【解决方案1】:

    要禁用后退按钮和向后滑动功能,请将此行添加到您的 viewDidLoad 方法中:

    self.navigationItem.leftBarButtonItem = nil;
    self.navigationItem.hidesBackButton = true;
    self.navigationController?.navigationItem.backBarButtonItem?.isEnabled = false;
    self.navigationController!.interactivePopGestureRecognizer!.isEnabled = false;
    

    【讨论】:

      【解决方案2】:

      实际上这种情况的最佳实践是在用户登录时以模态方式呈现登录视图控制器并关闭它。

      MainViewController.m

      viewWillAppear{
         [super viewWillAppear];
         if (!loggedIn){
             //present login view controller
         }
      }
      
      -(void)userDidLoggedIn{//delegate called after user successfully logged in
         [self dismissViewControllerAnimated:YES completion:nil];
      }
      

      如果你想保持这种行为,那么就使用这个

      目标-C:

      self.navigationItem.hidesBackButton = YES;
      

      斯威夫特:

      self.navigationItem.hidesBackButton = true
      

      【讨论】:

        【解决方案3】:
        self.navigationItem.hidesBackButton = YES;
        

        【讨论】:

        • 但这不会禁用滑动?
        • 搜索“How to disable back swipe gesture in UINavigationController on iOS 7”你会发现很多解决方案。
        猜你喜欢
        • 2014-01-16
        • 2020-10-15
        • 1970-01-01
        • 1970-01-01
        • 2015-11-07
        • 2017-08-07
        • 1970-01-01
        • 2021-11-10
        相关资源
        最近更新 更多