为了在UINavigationController
上按下后退按钮时执行某些验证。
在网上搜索了如何做之后,我决定继承UINavigationController
并实现UINavigationBarDelegate
。
这是我的问题:
只要我实际上没有实现UINavigationBarDelegate
协议的任何内容,它就像我使用普通UINavigationController
时一样。但是当我只实现这个功能时:
func navigationBar(_ navigationBar: UINavigationBar,
shouldPop item: UINavigationItem) -> Bool {
print(#function)
return true
}
我可以在调试控制台中看到该函数实际被调用。但流行不会发生,只有后退按钮消失,视图停留在那里。我希望只有上面的函数它仍然可以像以前一样工作(即视图应该正常弹出)。
任何人都可以看到我遗失的东西?
答案 0 :(得分:0)
您可以创建一个后退按钮并在此按钮的操作中添加下面的代码,该按钮将调用上一个视图,就好像它是导航栏的背面一样。在此按钮的操作中,您可以添加您想要的操作,如果您有任何问题,我可以在viewDidLoad()中调用隐藏按钮
// Action
self.navigationController?.popViewController(animated: true)
// Hide backbutton
self.navigationController?.navigationItem.hidesBackButton = true
答案 1 :(得分:0)
您缺少弹出视图控制器,请在代码中再添加一行self.popViewController(animated: true)
func navigationBar(_ navigationBar: UINavigationBar,
shouldPop item: UINavigationItem) -> Bool {
print(#function)
self.popViewController(animated: true)
return true
}