停止导航控制器swift的导航

时间:2016-01-25 07:15:45

标签: swift uinavigationcontroller uinavigationbar

我有登录页面的导航控制器,登录成功后,我想解除导航,这意味着一旦登录成功,用户不允许返回登录页面。我试图创建另一个故事板并执行segue,但导航栏仍然存在,无论如何以编程方式或从故事板中解除导航栏? enter image description here

我不希望"配对"按钮显示在此页面上。

2 个答案:

答案 0 :(得分:1)

我找到了解决方法!

我在iOS 11和iOS 13上对其进行了测试,并且效果很好:)

protocol CustomNavigationViewControllerDelegate {
    func shouldPop() -> Bool
}

class CustomNavigationViewController: UINavigationController, UINavigationBarDelegate {
    var backDelegate: CustomNavigationViewControllerDelegate?

    func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool {
        return backDelegate?.shouldPop() ?? true
    }
}

class SecondViewController: UIViewController, CustomNavigationViewControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()

        (self.navigationController as? CustomNavigationViewController)?.backDelegate = self
    }

    func shouldPop() -> Bool {
        if (needToShowAlert) {
            showExitAlert()
            return false

        } else {
            return true
        }
    }
}

答案 1 :(得分:0)

从“登录”页面查看导航控制器,而不是从导航控制器到“登录”页面。