在 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
}
我想在以编程方式更改 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
}