如果internet连接不可用,我正在尝试禁用选项卡项目。我有以下几点:
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并没有像我期望的那样被禁用。
运行打印语句并打印以下内容(当为.connected时):
***** <UITabBarItem: 0x11df3c8a0> title='Retrieve Completed Orders' image=<UIImage:0x2801bc090 named(main: tabbar_orders) {30, 30}>这正是我所期望的。这确实是第二个选项卡的名称。任何想法都会非常感谢,因为这让我抓狂……
发布于 2020-05-21 00:47:01
我不认为选项卡栏项目的isEnabled属性可以禁用它。我相信UITabBarItem从它的父类UIBarItem继承了这个属性。
相反,您应该实现UITabBarControllerDelegate方法tabBarController(_:shouldSelect:)
当用户点击选项卡栏项目时,选项卡栏将在其委托上调用该方法。如果您不希望该项目变为活动状态,则应返回false。
https://stackoverflow.com/questions/61918264
复制相似问题