【问题标题】:Disable tabbar item - Swift禁用标签栏项目 - Swift
【发布时间】:2015-10-08 13:40:59
【问题描述】:

如何禁用特定的标签栏项目?类似于第三个图标...

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

必须有一种方法可以完成单班轮这样简单的任务吗? 以上不行...

【问题讨论】:

  • 你有没有尝试过这样的事情:self.tabBarItem.items![2].setEnabled(true, forSegmentAtIndex: 2);

标签: swift uitabbarcontroller tabbar


【解决方案1】:

这就是答案

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

【讨论】:

  • 必须为 Swift 3 稍微调整一下:如果让 arrayOfTabBarItems = tabBarController?.tabBar.items as AnyObject as? NSArray,let tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem { tabBarItem.isEnabled = true }
【解决方案2】:

这是我使用 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 变量,然后一切顺利!

【讨论】:

    【解决方案3】:

    如果有人正在寻找如何禁用所有标签栏项目

    if let items = tabBarController?.tabBar.items {
            items.forEach { $0.isEnabled = false }
    }
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        SWIFT 4.2

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

        【讨论】:

          【解决方案6】:

          这是单线:

          在 Objective C 中,这行代码在 viewDidLoad: 中有效。

          在 Swift 中,它不适用于 viewDidLoad(),但适用于 viewWillAppear()

          【讨论】:

            【解决方案7】:

            我为此创建了一个扩展,基于“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
                            }
                        }
                    }
                }
            }
            

            【讨论】:

            • 这太棒了
            【解决方案8】:

            斯威夫特 5

            您可以使用此代码启用或禁用单个标签栏按钮。

            var controller = YourViewController()
            controller.tabBarItem.isEnabled = false
            

            【讨论】:

              【解决方案9】:

              有一种更简单的方法,只需一行代码:

              self.tabBarController?.tabBar.items?[2].isEnabled=false
              

              【讨论】:

                猜你喜欢
                • 2018-11-11
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2021-08-02
                • 1970-01-01
                • 2019-02-15
                • 1970-01-01
                相关资源
                最近更新 更多