禁用标签栏项目 - Swift
Disable tabbar item - Swift
如何禁用特定的标签栏项目?类似于第三个图标...
self.tabBarItem.items![2].enabled = false
必须有一种方法可以完成像一个班轮这样简单的任务吗?
以上都不行...
答案在这里
if let arrayOfTabBarItems = tabBarViewController.tabBar.items as! AnyObject as? NSArray,tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem {
tabBarItem.enabled = false
}
要在单个视图上禁用 tabBarItem(并在视图更改时重新启用它):
在 Class 定义 中,为您的 UITabBarItems 创建占位符 Class 变量:
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
}
这是我执行相同操作的代码,使用 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
变量,一切顺利!
这是单行本:
在 Objective C 中,该行代码在 viewDidLoad:
中有效。
在 Swift 中,它在 viewDidLoad()
中不起作用,但在 viewWillAppear()
中起作用。
我为此创建了一个扩展,"Aditya 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 { [=10=].isEnabled = false }
}
有一种更简单的方法,只需一行代码:
self.tabBarController?.tabBar.items?[2].isEnabled=false
Swift 5
您可以使用此代码启用或禁用单个标签栏按钮。
var controller = YourViewController()
controller.tabBarItem.isEnabled = 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
}
要在单个视图上禁用 tabBarItem(并在视图更改时重新启用它):
在 Class 定义 中,为您的 UITabBarItems 创建占位符 Class 变量:
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
}
这是我执行相同操作的代码,使用 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
变量,一切顺利!
这是单行本:
在 Objective C 中,该行代码在 viewDidLoad:
中有效。
在 Swift 中,它在 viewDidLoad()
中不起作用,但在 viewWillAppear()
中起作用。
我为此创建了一个扩展,"Aditya 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 { [=10=].isEnabled = false }
}
有一种更简单的方法,只需一行代码:
self.tabBarController?.tabBar.items?[2].isEnabled=false
Swift 5
您可以使用此代码启用或禁用单个标签栏按钮。
var controller = YourViewController()
controller.tabBarItem.isEnabled = false