【问题标题】:Swift 3 tab bar disable tabSwift 3 标签栏禁用标签
【发布时间】:2017-07-26 05:17:11
【问题描述】:

我创建了一个带有 5 个标签的标签栏。我们想要创建一个功能,我们可以通过编程方式启用/禁用标签栏的某些标签,以便用户无法点击它。

我们使用了默认的标签栏控制器,我们使用的是 swift 3。有人知道如何管理这些东西吗?

我尝试了很多方法,但似乎无法限制用户点击选项卡。

如果有人遇到并解决了这个问题,请告诉我。

【问题讨论】:

  • 你试过 tabbarItem 的 isEnabled 属性了吗?
  • tabBarItem.isEnabled = false 会起作用!!
  • @SivajeeBattina 是的,我已经尝试过但没有工作。
  • @luckyShubhra.. 它不工作。!!
  • 你能试试 userInteractionEnabled 吗?

标签: ios swift navigation uitabbarcontroller


【解决方案1】:
let tabBarControllerItems = self.tabBarController?.tabBar.items

if let tabArray = tabBarControllerItems {
    tabBarItem1 = tabArray[0]
    tabBarItem2 = tabArray[1]

    tabBarItem1.isEnabled = false
    tabBarItem2.isEnabled = false    
}

只需将上面的代码块放在初学者的 viewDidLoad() 方法中,不要忘记创建 tabBarItem 变量

【讨论】:

  • 试试这个 let tabBar3 : UITabBarItem = UITabBarItem(title: "Title", image: nil, tag: 2) tabBar3.isEnabled = false
【解决方案2】:

在你的 viewWillAppear() 方法中试试这个:

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

注意:以上代码将禁用您的第三个标签点击,要禁用任何其他标签,只需更改arrayOfTabBarItems中的索引

【讨论】:

    【解决方案3】:

    Swift 3 xcode 8.3.3

    我正在为您的问题制作一个演示应用程序。这是 TabBar ViewController 中 firstViewController 的代码。

    class firstViewController: UIViewController ,UITabBarControllerDelegate {
    
    override func viewDidLoad() {
    super.viewDidLoad()
    
    self.tabBarController?.delegate = self
    }
    
    
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if viewController.isKind(of: secondViewController.self as AnyClass) {
          return true  
        } 
        if viewController.isKind(of: thirdViewController.self as AnyClass) {
          return false
        } 
      }
    }
    

    在那个Demo SecondViewController 中点击并打开ViewController。但是没有点击thirdViewController。

    【讨论】:

      【解决方案4】:

      只需创建一个 customTabBarController 类并将下面的代码放在 viewDidLoad() 上。

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

      因此您可以根据需要更改 arrayOfTabBarItems 索引。

      【讨论】:

        猜你喜欢
        • 2015-10-08
        • 2021-08-02
        • 2011-12-26
        • 2011-05-31
        • 2011-10-15
        • 2018-09-19
        • 2018-10-31
        • 2017-01-17
        • 2013-06-26
        相关资源
        最近更新 更多