Предпочтительный стиль строки состояния контроллера представления игнорируется, когда в контроллере навигации
Я пишу приложение для iOS с несколькими представлениями. Я настроил приложение на использование стиля строки состояния на основе ViewController, что позволяет мне использовать следующий код
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Это сработало, как и ожидалось.
Но затем я встроил представления в контроллер навигации и соединил BarButtonItem с showSegue. С тех пор ViewController вида, переключенного на, игнорирует настройки стиля и показывает черную строку состояния по умолчанию.
Ответы
Ответ 1
Когда вы находитесь в контроллере навигации, который не будет вызван. Будет вызываться контроллер навигации preferredStatusBarStyle. Попробуйте это вместе с кодом:
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
Ответ 2
Существует решение, которое является более кратким (и рекомендованным Apple):
extension UINavigationController {
override open var childForStatusBarStyle: UIViewController? {
return topViewController
}
}