Недавно у меня возникла одна проблема. Когда в моем стеке контроллера навигации (один дочерний контроллер):
MainScreen -> ScreenA -> ScreenB -> Screenc
Итак, когда в моем Screenc
я хочу скрыть панель навигации и строку состояния. Все работало нормально. Но когда я возвращаюсь к своему ScreenB
, моя строка состояния и панель навигации перекрываются. Не знаю, почему это произошло. Я ищу в некоторых ответах Google и некоторых SO. Затем я получил, что isNavigationBarHidden
base UIViewController
, а isHidden
base 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
}
Он работает хорошо. На моем предыдущем экране нет перекрытия. Почему это происходит. Есть ли какая-то конкретная c причина behid:
navigationController?.isNavigationBarHidden
(vs) self.navigationController?.navigationBar.isHidden
Я очень отношусь к разработке iOS. Просто хочу понять разницу. Чтобы я мог узнать, делаю ли я что-нибудь не так.
Спасибо