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

Disabling taskbar after changing ViewController in Swift?

我想在以编程方式更改 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 { [=10=].isEnabled = false }

您应该使用 UITabbarControllerDelegate 的委托方法 shouldSelectViewController。这个委托询问用户是否可以 select 视图控制器,简单来说。

查看 Apple 文档 link

这样使用:

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