我的标签栏中有一个项目,在满足某些条件之前不应启用该项目。我可以在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
}
}
}
答案 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的回答和一些实验的结合:
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()
是必要的,但一次只能使用一件事。DispatchQueue
协议并设置了UITabBarControllerDelegate
。tabBar?.delegate = self
它有效!当allButtonsPressed为true时,标签栏项立即启用。当它是假的 - 禁用。还有一个让Rohit帮我解决问题。现在,关闭以了解有关DispatchQueue的更多信息......