禁用的TabBar项目 - 斯威夫特

问题描述 投票:7回答:7

如何禁用特定的TabBar项目?喜欢的东西为第三图标...

self.tabBarItem.items![2].enabled = false

必须有做这样一个简单的任务作为一个衬垫的方法吗?以上不工作...

swift uitabbarcontroller tabbar
7个回答
12
投票

下面是答案

if  let arrayOfTabBarItems = tabBarViewController.tabBar.items as! AnyObject as? NSArray,tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem {
        tabBarItem.enabled = false
    }

8
投票

这是我做的一样,采用斯威夫特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变量和你所有的好从那里走!


3
投票

要禁用在单个视图中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

}

2
投票

下面是一行代码:

在Objective C,该行代码工作在viewDidLoad:

在斯威夫特,它不viewDidLoad()工作,但在工作viewWillAppear()


2
投票

我创建了这个的延伸,“阿迪亚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
                }
            }
        }
    }
}

2
投票

SWIFT 4.2

if let arrayOfTabBarItems = self.tabBar.items as AnyObject as? NSArray,let 
   tabBarItem = arrayOfTabBarItems[1] as? UITabBarItem {
   tabBarItem.isEnabled = false
}

1
投票

万一有人找如何禁用所有标签栏项目:

if let items = tabBarController?.tabBar.items {
        items.forEach { $0.isEnabled = false }
}
© www.soinside.com 2019 - 2024. All rights reserved.