Swift:禁用UITabBarItem的方法不起作用

问题描述 投票:0回答:1

如果没有互联网连接,我正在尝试禁用选项卡项目。我有以下内容:

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

这是我期望的。这确实是第二个选项卡的名称。任何想法将不胜感激,因为这使我发疯...

swift xcode uitabbar isenabled
1个回答
0
投票

我认为标签栏项目的isEnabled属性无法将其禁用。我相信UITabBarItem从其父类UIBarItem继承了该属性。

相反,您应该实现UITabBarControllerDelegate方法tabBarController(_:shouldSelect:)

当用户点击选项卡栏项目时,选项卡栏将在其委托上调用该方法。如果您不希望该项变为活动状态,则返回false。

© www.soinside.com 2019 - 2024. All rights reserved.