我想以编程方式更改ViewController后禁用任务栏。我有一个悬停按钮。单击它之后,将调用此代码来更改ViewController:
Array(
[0] => Array
(
[event_title] => Test Event
[title] => Test Event
)
[1] => Array
(
[event_title] => Welcome!
[title] => Welcome!
)
[2] => Array
(
[event_title] => sa
[title] => sa
)
[3] => Array
(
[entry_title] => sdasdad
[title] => sdasdad
)
[4] => Array
(
[event_title] => sadasd
[title] => sadasd
)
[5] => Array
(
[event_title] => red
[title] => red
)
[6] => Array
(
[topic_title] => new toipic
[title] => new toipic
)
[7] => Array
(
[topic_title] => gff
[title] => gff
)
)
这很好。更改后,我调用了viewDidLoad方法,该方法也被称为(检查控制台)。 代码是这样的:
self.navigationController?.setViewControllers([lvc!], animated: true)
该按钮位于HomeView中。如果我在HomeView的viewDidLoad方法中调用override func viewDidLoad() {
super.viewDidLoad()
self.tabBarController?.tabBar.isUserInteractionEnabled = false
}
,则选项卡栏被禁用。我正在使用NavigationController呈现不同的视图。
您是否知道为什么不禁用选项卡栏以及如何修复它?
答案 0 :(得分:1)
尝试一下:
_ = tabBarController?.tabBar.items?.compactMap { $0.isEnabled = false }
答案 1 :(得分:0)
您应该使用shouldSelectViewController
的委托方法UITabbarControllerDelegate
。这位代表询问用户是否可以简单地选择视图控制器。
请参阅Apple文档link
像这样使用它:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
If homeControllerIsDoingSomething {
return false
}
return true
}