![](/img/trans.png)
[英]Set NavigationBar title on next ViewController without visual bugs
[英]Set NavigationBar for Destination ViewController Only
我有一个称为SourceViewController
的ViewController,它嵌入在NavigationController中。
选择UITableViewCell
SourceViewController
选择到DestinationViewController
。
我想在SourceViewController
上隐藏导航栏,但在DestinationViewController
上显示它以显示“后退”按钮。
因此,在SourceViewController
:
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.hidden = true
}
并且在DestinationViewController
:覆盖func viewDidLoad(){super.viewDidLoad()
self.navigationController?.navigationBar.hidden = false
}
但是,当我在DestinationViewController
点击“返回”以返回到SourceViewController
,导航SourceViewController
将重新出现在SourceViewController
下一个“显而易见的”步骤是在SourceViewController
viewDidAppear
中设置navigationBar.hidden = false
,但这有很多原因:主要是DRYness,而且在返回SourceViewController
,隐藏navigationBar
有所延迟,并且对于一瞬间。
我该如何解决这个问题?
检查ViewController生命周期希望了解iOS UIViewController生命周期 。 当您启动程序时,将调用viewDidLoad并一切正常,但是从detailController返回时,未调用viewDidLoad,只需在viewWillApear中更改此行(self.navigationController?.navigationBar.hidden = true),一切都必须正常。
我认为这会起作用,隐藏导航栏。 在显示/消失视图之前。
override func viewWillAppear(animated: Bool) {
navigationController?.navigationBarHidden = true
super.viewWillAppear(animated)
}
override func viewWillDisappear(animated: Bool) {
navigationController?.navigationBarHidden = true
super.viewWillDisappear(animated)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.