UINavigationBarDelegate shouldPop项目奇怪的行为

时间:2017-03-03 14:47:32

标签: ios iphone swift

我试图阻止一些ViewControllers返回。我已经将UINavigationController子类化以进行一些UI自定义。我将UINavigationController子类与UINavigationBarDelegate协议一致,并尝试实现navigationBar:shouldPop方法。 我有这段代码:

func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool {
    print("Popping: \(item.title)")

    return true
}

当我从左边使用滑动返回时,方法被调用,一切正常。当我按下后退按钮时,仍然会调用该方法,但ViewController不会弹出。如果ViewController是堆栈中的第二个,则后退按钮会消失,就像导航栏认为弹出确实发生一样。任何人都可以帮我理解这种行为吗?

1 个答案:

答案 0 :(得分:3)

您必须手动弹出视图:

func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool {
    print("Popping: \(item.title)")

    self.popViewController(animated: true)

    return true
}