在Swift中更改ViewController后禁用任务栏?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Swift中更改ViewController后禁用任务栏?相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

知道为什么禁用标签栏以及如何解决它?

答案

试试这个:

_ = tabBarController?.tabBar.items?.compactMap { $0.isEnabled = false }
另一答案

你应该使用shouldSelectViewController的委托方法UITabbarControllerDelegate。该委托询问用户是否可以简单地选择视图控制器。

请参阅Apple文档link

像这样使用它:

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

以上是关于在Swift中更改ViewController后禁用任务栏?的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中,如何在不同的 ViewController 中永久更改 a 标签的文本?

如何在 SWIFT 中更改 ViewController 后保留集合视图滚动位置

从 Swift 中的其他类更改 ViewController 的对象

Swift - 使用 selectedIndex 更改 var

在iOS8中使用Swift更改特定ViewControllers的状态栏颜色

Swift UIcollectionView 在同一个 ViewController 上更改第二个 UICollectionView 的内容?