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

时间:2018-08-31 05:39:37

标签: ios swift user-interface tabs disable

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

   Array(
[0] => Array
        (
            [event_title] => Test Event
            [title] => Test Event
        )
 [1] => Array
        (
            [event_title] => Welcome!
            [title] => Welcome!
        )
    [2] => Array
        (
            [event_title] => sa
            [title] => sa
        )
    [3] => Array
        (
            [entry_title] => sdasdad
            [title] => sdasdad
        )    
    [4] => Array
        (
            [event_title] => sadasd
            [title] => sadasd
        )
    [5] => Array
        (
            [event_title] => red
            [title] => red
        )
    [6] => Array
        (
            [topic_title] => new toipic
            [title] => new toipic
        )     
    [7] => Array
        (
            [topic_title] => gff
            [title] => gff
        )
)

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

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

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

您是否知道为什么不禁用选项卡栏以及如何修复它?

2 个答案:

答案 0 :(得分:1)

尝试一下:

_ = tabBarController?.tabBar.items?.compactMap { $0.isEnabled = false }

答案 1 :(得分:0)

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

请参阅Apple文档link

像这样使用它:

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