【发布时间】:2020-07-27 22:11:10
【问题描述】:
我正在尝试练习使用标签栏和导航控制器。但是,我发现 overrideUserInterfaceStyle 和 willTransition 在其他类中不起作用。我该如何解决?
这是我的代码,它可以完美运行:
class ViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
setupTabBar()
}
func setupTabBar() {
let aTab = UINavigationController(rootViewController: AController())
aTab.tabBarItem.image = UIImage(systemName: "cloud.sun.fill")
aTab.tabBarItem.title = "A"
let bTab = UINavigationController(rootViewController: BController())
bTab.tabBarItem.image = UIImage(systemName: "calendar")
bTab.tabBarItem.title = "B"
let cTab = UINavigationController(rootViewController: CController())
cTab.tabBarItem.image = UIImage(systemName: "text.badge.checkmark")
cTab.tabBarItem.title = "C"
let dTab = UINavigationController(rootViewController: DController())
dTab.tabBarItem.image = UIImage(systemName: "gear")
dTab.tabBarItem.title = "D"
overrideUserInterfaceStyle = .dark // It has been called, working fine.
viewControllers = [aTab, bTab, cTab, dTab]
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
//This will working perfectly
}
}
但是我创建了无法正常工作的新类,我错过了什么吗?这是我的代码:
class AController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "A"
overrideUserInterfaceStyle = .dark // Will NOT called...
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
//This will not working
}
}
class BController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "B"
overrideUserInterfaceStyle = .light // Will NOT called...
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
//This will not working
}
}
class CController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "C"
overrideUserInterfaceStyle = .unspecified // Will NOT called...
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
//This will not working
}
}
class DController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.title = "D"
overrideUserInterfaceStyle = .unspecified // Will NOT called...
}
override func willTransition(to newCollection: UITraitCollection, with coordinator: UIViewControllerTransitionCoordinator) {
//This will not working
}
}
【问题讨论】:
标签: ios swift overriding ios-darkmode