仅为目标 ViewController 设置 NavigationBar
Set NavigationBar for Destination ViewController Only
我有一个名为 SourceViewController
的 ViewController,它嵌入在 NavigationController 中。
SourceViewController
选择 UITableViewCell
后转至 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
到 return 到 SourceViewController
中点击 "Back" 时,导航栏会重新出现在 SourceViewController
中
下一步 'obvious' 将在 SourceViewController
中设置 viewDidAppear
中的 navigationBar.hidden = false
,但是这闻起来有很多原因:主要是干燥,但也有 [=48] =]ing 到 SourceViewController
,隐藏 navigationBar
有延迟,一瞬间可见。
如何解决这个问题?
检查 ViewController 生命周期 Looking to understand the iOS UIViewController lifecycle 。
当您启动程序时调用 viewDidLoad 并且一切正常,但是当您从 detailController 返回时,不会调用 viewDidLoad,只需更改 viewWillApear 中的这一行 (self.navigationController?.navigationBar.hidden = true) 和所有内容一定没问题。
我认为这会起作用,隐藏导航栏。在 appearing/disappearing 视图之前。
override func viewWillAppear(animated: Bool) {
navigationController?.navigationBarHidden = true
super.viewWillAppear(animated)
}
override func viewWillDisappear(animated: Bool) {
navigationController?.navigationBarHidden = true
super.viewWillDisappear(animated)
}
我有一个名为 SourceViewController
的 ViewController,它嵌入在 NavigationController 中。
SourceViewController
选择 UITableViewCell
后转至 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
到 return 到 SourceViewController
中点击 "Back" 时,导航栏会重新出现在 SourceViewController
下一步 'obvious' 将在 SourceViewController
中设置 viewDidAppear
中的 navigationBar.hidden = false
,但是这闻起来有很多原因:主要是干燥,但也有 [=48] =]ing 到 SourceViewController
,隐藏 navigationBar
有延迟,一瞬间可见。
如何解决这个问题?
检查 ViewController 生命周期 Looking to understand the iOS UIViewController lifecycle 。 当您启动程序时调用 viewDidLoad 并且一切正常,但是当您从 detailController 返回时,不会调用 viewDidLoad,只需更改 viewWillApear 中的这一行 (self.navigationController?.navigationBar.hidden = true) 和所有内容一定没问题。
我认为这会起作用,隐藏导航栏。在 appearing/disappearing 视图之前。
override func viewWillAppear(animated: Bool) {
navigationController?.navigationBarHidden = true
super.viewWillAppear(animated)
}
override func viewWillDisappear(animated: Bool) {
navigationController?.navigationBarHidden = true
super.viewWillDisappear(animated)
}