Swift禁用带功能的标签栏项

时间:2018-05-31 05:31:36

标签: ios swift uitabbaritem

我的标签栏中有一个项目,在满足某些条件之前不应启用该项目。我可以在viewDidLoad()中从我的子类UITabBarController中禁用该项,但我在创建可以在需要时调用的函数时遇到问题。以下是我到目前为止 - 由于我不明白的原因,我的标签栏项目数组始终为零! (除非在viewDidLoad()中初始化,否则它可以正常工作。)

func setTabState(whichTab: Int) {
    let arrayOfTabBarItems = self.tabBar.items

    if let barItems = arrayOfTabBarItems {
        if barItems.count > 0 {
            let tabBarItem = barItems[whichTab]
            tabBarItem.isEnabled = !tabBarItem.isEnabled
        }
    }
}

2 个答案:

答案 0 :(得分:2)

请在下面的代码中添加您要在 UITabbarController

中禁用tabbar项目的代码
//Here Disable 0 Tabbar item

DispatchQueue.main.async {
    let items = self.tabBar.items!
    if items.count > 0 {
         items[0].isEnabled = false
    }
}

答案 1 :(得分:0)

解决方案结果是Rohit Makwana的回答和一些实验的结合:

  1. 在我的CustomTabBarViewController的a <- dbinom(0:25, 25, .5) # pmf of a binomial distribution with 25 trials b <- rbinom(1e6, 25, .5) # random binomial variates with 25 trials plot(a) # produces Open Circles lines(table(b)/length(b), type = "h") # produces vertical bars 中,我使用了Rohit的 回答设置标签栏项目的初始状态。我仍然不明白为什么使用viewDidLoad()是必要的,但一次只能使用一件事。
  2. 在单独的视图控制器中,我采用了DispatchQueue协议并设置了
    UITabBarControllerDelegate
  3. 最后,我在一个变量上创建了一个属性观察者,当满足某些条件时,该变量被设置为true:
  4. tabBar?.delegate = self

    它有效!当allButtonsPressed为true时,标签栏项立即启用。当它是假的 - 禁用。还有一个让Rohit帮我解决问题。现在,关闭以了解有关DispatchQueue的更多信息......