如果没有互联网连接,我正在尝试禁用选项卡项目。我有以下内容:
internal func getViewControllers(connectionStatus: ConnectionService.ConnectionStatus) {
if connectionStatus == .connected {
if let arrayOfTabBarItems = self.tabBar.items as AnyObject as? NSArray,
let tabBarItem = arrayOfTabBarItems[1] as? UITabBarItem {
print("***** \(arrayOfTabBarItems[1])")
tabBarItem.isEnabled = false
}
} else {
if let arrayOfTabBarItems = self.tabBar.items as AnyObject as? NSArray,
let tabBarItem = arrayOfTabBarItems[2] as? UITabBarItem {
print("***** \(arrayOfTabBarItems[2])")
tabBarItem.isEnabled = false
}
}
}
该方法从另一个正在检测用户设备连接状态的类中调用。该方法在应有的时候被调用,但是tabBarItem并未像我期望的那样被禁用。
运行打印语句,并打印以下内容(连接时):
***** <UITabBarItem: 0x11df3c8a0> title='Retrieve Completed Orders' image=<UIImage:0x2801bc090 named(main: tabbar_orders) {30, 30}>
这是我期望的。这确实是第二个选项卡的名称。任何想法将不胜感激,因为这使我发疯...
我认为标签栏项目的isEnabled
属性无法将其禁用。我相信UITabBarItem
从其父类UIBarItem
继承了该属性。
相反,您应该实现UITabBarControllerDelegate
方法tabBarController(_:shouldSelect:)
当用户点击选项卡栏项目时,选项卡栏将在其委托上调用该方法。如果您不希望该项变为活动状态,则返回false。