Swift 3标签栏禁用标签
我已经创建了一个带有5个标签的标签栏。我们想要创建一个功能,我们可以以编程方式启用/禁用一些标签栏的选项卡,以便用户无法点击它。Swift 3标签栏禁用标签
我们使用了默认的标签栏控制器,我们使用的是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变量
我已经尝试过但不工作..! – iDev
是的。 @ AmK-IOSDev试试这个解决方案。它的工作.... –
试试这个 让tabBar3:UITabBarItem = UITabBarItem(标题:“标题”,图像:零,标记:2) tabBar3.isEnabled = false –
只需创建一个customTabBarController类,并把娄代码上viewDidLoad中() 。
if let arrayOfTabBarItems = self.tabBar.items as AnyObject as? NSArray,let tabBarItem = arrayOfTabBarItems[3] as? UITabBarItem {
tabBarItem.isEnabled = false
}
因此您可以根据您的需求更改arrayOfTabBarItems索引。
斯威夫特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没有被点击。
在viewWillAppear()
方法试试这个:
if let arrayOfTabBarItems = tabBarViewController.tabBar.items as! AnyObject as? NSArray,tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem {
tabBarItem.enabled = false
}
注意:将上面的代码从点击禁用第三个选项卡,禁用任何其他只是改变指数在arrayOfTabBarItems
你有没有尝试tabbarItem上的isEnabled属性? –
tabBarItem.isEnabled = false会起作用! – luckyShubhra
@SivajeeBattina是的,我已经尝试过,但没有工作。 – iDev