我该如何禁用特定的选项卡项?比如第三个图标...
self.tabBarItem.items![2].enabled = false
一行代码就能完成这么简单的任务吗?上面的代码并不可行...
我该如何禁用特定的选项卡项?比如第三个图标...
self.tabBarItem.items![2].enabled = false
一行代码就能完成这么简单的任务吗?上面的代码并不可行...
这里是答案
if let arrayOfTabBarItems = tabBarViewController.tabBar.items as! AnyObject as? NSArray,tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem {
tabBarItem.enabled = false
}
if let arrayOfTabBarItems = tabBarController?.tabBar.items as AnyObject as? NSArray, let tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem {
tabBarItem.isEnabled = true
}
- jammyman34这是我用Swift 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
变量,然后你就可以开始了!
如果有人想知道如何禁用所有选项卡栏项目:
if let items = tabBarController?.tabBar.items {
items.forEach { $0.isEnabled = false }
}
SWIFT 4.2
if let arrayOfTabBarItems = self.tabBar.items as AnyObject as? NSArray,let
tabBarItem = arrayOfTabBarItems[1] as? UITabBarItem {
tabBarItem.isEnabled = false
}
要在单个视图上禁用tabBarItem(并在视图更改时重新启用它):
在类定义中,为您的UITabBarItems创建占位符Class变量:
var tabBarItemONE: UITabBarItem = UITabBarItem()
var tabBarItemTWO: UITabBarItem = UITabBarItem()
etc...
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
}
override func viewWillDisappear(animated: Bool) {
tabBarItemONE.enabled = true
tabBarItemTWO.enabled = true
}
Swift 5
您可以使用以下代码启用或禁用单个选项卡按钮。
var controller = YourViewController()
controller.tabBarItem.isEnabled = false
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
}
}
}
}
}
以下是一行代码:
在Objective C中,该行代码可以在viewDidLoad:
方法中使用。
在Swift中,该行代码无法在viewDidLoad()
方法中使用,但可以在viewWillAppear()
方法中使用。
有一种更简单的方法,只需要一行代码:
self.tabBarController?.tabBar.items?[2].isEnabled=false
self.tabBarItem.items![2] .setEnabled(true,forSegmentAtIndex:2);
? - BHendricks