最近我有一个问题。 在我的导航控制器堆栈(一个子控制器)中时:
MainScreen -> ScreenA -> ScreenB -> Screenc
所以在screenc
中,我想隐藏导航栏和状态栏。 但是当我回到我的screenb
时,我的状态栏和导航栏是重叠的。不知道为什么会这样。我在一些google搜索,一些SO回答。 然后我得到isNavigationBarHidding
基是UIViewController
,而isHidded
基是UIView
。
为什么我用下面的代码隐藏我的导航栏和状态栏:
override var prefersStatusBarHidden: Bool {
return true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.isHidden = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.isHidden = false
}
在我的前一个屏幕,我得到的问题,我的状态栏和导航栏是得到重叠。
但当我使用这个代码时:
override var prefersStatusBarHidden: Bool {
return true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.isNavigationBarHidden = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
navigationController?.isNavigationBarHidden = false
}
它工作得很好。 在我的前一个屏幕中没有重叠。 为什么会发生。 有什么具体的原因吗?贝希德:
NavigationController?。IsNavigationBarHidded
(vs)self.NavigationController?。NavigationBar.IsHidded
我对iOS的开发很感兴趣。 只是想了解其中的区别。 这样我就能知道我做错了什么。
谢谢
是的,差别很大。 说得很好! 第二个则礼貌而正确地指导导航控制器如何配置自己。 第一个粗暴地,非法地进入导航控制器的接口,并直接操纵它。