如何禁用特定的TabBar项目?喜欢的东西为第三图标...
self.tabBarItem.items![2].enabled = false
必须有做这样一个简单的任务作为一个衬垫的方法吗?以上不工作...
下面是答案
if let arrayOfTabBarItems = tabBarViewController.tabBar.items as! AnyObject as? NSArray,tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem {
tabBarItem.enabled = false
}
这是我做的一样,采用斯威夫特3代码:
let tabBarControllerItems = self.tabBarController?.tabBar.items
if let tabArray = tabBarControllerItems {
tabBarItem1 = tabArray[0]
tabBarItem2 = tabArray[1]
tabBarItem1.isEnabled = false
tabBarItem2.isEnabled = false
}
只要把代码块以上对于初学者的viewDidLoad()
方法,不要忘记创造tabBarItem
变量和你所有的好从那里走!
要禁用在单个视图中tabBarItem(和重新启用它的视图的改变时):
在类定义,创建占位符类变量为您UITabBarItems:
var tabBarItemONE: UITabBarItem = UITabBarItem()
var tabBarItemTWO: UITabBarItem = UITabBarItem()
etc...
然后,在viewWillAppear中,如你所愿禁止的项目:
let tabBarControllerItems = self.tabBarController?.tabBar.items
if let arrayOfTabBarItems = tabBarControllerItems as! AnyObject as? NSArray{
tabBarItemONE = arrayOfTabBarItems[0] as! UITabBarItem
tabBarItemONE.enabled = false
tabBarItemTWO = arrayOfTabBarItems[1] as! UITabBarItem
tabBarItemTWO.enabled = false
}
在viewWillDisappear,重新启用的项目:
override func viewWillDisappear(animated: Bool) {
tabBarItemONE.enabled = true
tabBarItemTWO.enabled = true
}
下面是一行代码:
在Objective C,该行代码工作在viewDidLoad:
。
在斯威夫特,它不viewDidLoad()
工作,但在工作viewWillAppear()
。
我创建了这个的延伸,“阿迪亚Koukuntla”答案的基础:
extension UIViewController {
func enableTabbarItems(_ items: [Int]) {
disableAllTabbarItems()
if let arrayOfTabBarItems = tabBarController?.tabBar.items as NSArray? {
for i in 0..<arrayOfTabBarItems.count {
if items.contains(i) {
if let tabBarItem = arrayOfTabBarItems[i] as? UITabBarItem {
tabBarItem.isEnabled = true
}
}
}
}
}
private func disableAllTabbarItems() {
if let arrayOfTabBarItems = tabBarController?.tabBar.items as NSArray? {
for i in 0..<arrayOfTabBarItems.count {
if let tabBarItem = arrayOfTabBarItems[i] as? UITabBarItem {
tabBarItem.isEnabled = false
}
}
}
}
}
SWIFT 4.2
if let arrayOfTabBarItems = self.tabBar.items as AnyObject as? NSArray,let
tabBarItem = arrayOfTabBarItems[1] as? UITabBarItem {
tabBarItem.isEnabled = false
}
万一有人找如何禁用所有标签栏项目:
if let items = tabBarController?.tabBar.items {
items.forEach { $0.isEnabled = false }
}