Swift 3标签栏禁用选项卡

时间:2017-07-26 05:17:12

标签: ios swift navigation uitabbarcontroller

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

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

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

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

4 个答案:

答案 0 :(得分: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变量

答案 1 :(得分:2)

viewWillAppear()方法中尝试此操作:

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

注意:上面的代码会禁止您点击第三个标签,禁用其他标签,只需更改arrayOfTabBarItems

中的索引即可

答案 2 :(得分:1)

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
    } 
  }
}

在该演示中,SecondViewController是Click并打开ViewController。但是没有点击thirdViewController。

答案 3 :(得分:0)

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

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

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