我想在以编程方式更改视图控制器后禁用任务栏。我有一个悬停按钮。单击它后,将调用此代码以更改视图控制器:
self.navigationController?.setViewControllers([lvc!], animated: true)
这很好用。更改后,我正在调用 viewDidLoad 方法,该方法也称为(检查控制台(。 代码是这样的:
override func viewDidLoad() {
super.viewDidLoad()
self.tabBarController?.tabBar.isUserInteractionEnabled = false
}
该按钮位于主视图中。如果我在主页视图的 viewDidLoad 方法中调用self.tabBarController?.tabBar.isUserInteractionEnabled = false
,则选项卡栏被禁用。我正在使用导航控制器来呈现不同的视图。
知道为什么标签栏没有被禁用以及如何修复它吗?
试试这个:
_ = tabBarController?.tabBar.items?.compactMap { $0.isEnabled = false }
您应该使用委托方法shouldSelectViewController
UITabbarControllerDelegate
。此委托询问用户是否可以选择视图控制器,简而言之。
请参阅 Apple 文档链接
像这样使用它:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
If homeControllerIsDoingSomething {
return false
}
return true
}