在 Swift 中更改视图控制器后禁用任务栏?



我想在以编程方式更改视图控制器后禁用任务栏。我有一个悬停按钮。单击它后,将调用此代码以更改视图控制器:

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 }

您应该使用委托方法shouldSelectViewControllerUITabbarControllerDelegate。此委托询问用户是否可以选择视图控制器,简而言之。

请参阅 Apple 文档链接

像这样使用它:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
If homeControllerIsDoingSomething {
return false
}
return true
}

最新更新