假设我有两个观点。如果我在第一个视图中执行推送segue到第二个视图。然后,如果用户按下导航栏上的后退按钮或从屏幕左侧向右滑动,我想执行一些代码,这可能吗?
我会告诉你我想做什么,看看有没有更好的方法来做到这一点。我的第一个视图几乎没有导航栏。但是,第二种观点确实如此。从第一个视图到第二个视图时,没有任何问题,就像导航栏中显示的动画一样。
然而,当我从第二个视图返回第一个视图时,导航栏会一直停留在屏幕上,直到它完全从第二个视图返回。
感谢您的帮助!
答案 0 :(得分:1)
以下代码可能能够满足您的需求。
这是由导航堆栈中的更改触发的,如果父级为nil,则表示视图正在被解除。
在该检查中,您只需隐藏导航控制器。
以下代码适用于Swift 3.0,如果需要,可以很容易地修改Swift 2.2。
override func willMove(toParentViewController parent: UIViewController?) {
super.willMove(toParentViewController: parent)
if parent == nil {
navigationController?.navigationBar.isHidden = true
}
}
答案 1 :(得分:1)
所以我修复它的方法是使用以下方法:
override func viewWillDisappear(_ animated: Bool)
我根本不知道这种方法。