我创建了一个带有5个标签的标签栏。我们想创建一个功能,我们可以以编程方式启用/禁用标签栏的某些选项卡,以便用户无法点击它。
我们使用了默认的标签栏控制器,我们正在使用swift 3.有没有人知道如何管理这些东西?
我尝试了很多方法,但似乎无法限制用户点击标签。
如果有人遇到并解决了这个问题,请告诉我。
答案 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索引。