我试图阻止一些ViewControllers返回。我已经将UINavigationController子类化以进行一些UI自定义。我将UINavigationController子类与UINavigationBarDelegate协议一致,并尝试实现navigationBar:shouldPop方法。 我有这段代码:
func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool {
print("Popping: \(item.title)")
return true
}
当我从左边使用滑动返回时,方法被调用,一切正常。当我按下后退按钮时,仍然会调用该方法,但ViewController不会弹出。如果ViewController是堆栈中的第二个,则后退按钮会消失,就像导航栏认为弹出确实发生一样。任何人都可以帮我理解这种行为吗?
答案 0 :(得分:3)
您必须手动弹出视图:
func navigationBar(_ navigationBar: UINavigationBar, shouldPop item: UINavigationItem) -> Bool {
print("Popping: \(item.title)")
self.popViewController(animated: true)
return true
}