0

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

self.navigationController?.setViewControllers([lvc!], animated: true)

这很好用。更改后,我调用 viewDidLoad 方法,该方法也被调用(检查控制台)。代码是这样的:

override func viewDidLoad() {
    super.viewDidLoad()
    self.tabBarController?.tabBar.isUserInteractionEnabled = false
}

该按钮位于 HomeView 中。如果我self.tabBarController?.tabBar.isUserInteractionEnabled = false 在 HomeView 的 viewDidLoad 方法中调用,则标签栏被禁用。我正在使用 NavigationController 来呈现不同的视图。

知道为什么标签栏没有被禁用以及如何修复它吗?

4

2 回答 2

1

尝试这个:

_ = tabBarController?.tabBar.items?.compactMap { $0.isEnabled = false }
于 2018-08-31T06:49:02.023 回答
0

您应该使用shouldSelectViewController. UITabbarControllerDelegate这个委托用简单的话询问用户是否可以选择视图控制器。

请参阅 Apple 文档链接

像这样使用它:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
    If homeControllerIsDoingSomething {
        return false
    }
    return true
}
于 2018-08-31T07:32:51.830 回答