ios - 从 UITabBarController 调用时无法获取常用函数中的选项卡项

标签 ios swift uitabbarcontroller tabbar uitabbaritem

我在 UIViewController 扩展中有一个常用函数。我从标签栏 Controller 和 View Controller 调用这个函数。这在从 View Controller 调用时有效,但在从选项卡栏 Controller 调用时无效。控制转到 else Error: tabItems。我不知道出了什么问题,是否还有其他方法可以在从选项卡 Controller 调用时正常工作?

class MainTabBarController: UITabBarController, UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.updateBadges()
}

extension UIViewController {

    func updateBadges() {
        DispatchQueue.main.async {
            self.setBadge(tab: 1, count: 3)
        }
    }

    func setBadge(tab: Int, count: Int) {
        if let tabItems = self.tabBarController?.tabBar.items {
            print("Inside tabItems")

            let tabItem = tabItems[tab]

            if count != 0 {
                tabItem.badgeValue = String(count)
            } else {
                tabItem.badgeValue = nil
            }
        } else {
            print("Error: tabItems")
        }
    }
}

最佳答案

问题是 self.tabBarController 对于 UITabBarController 本身是 nil。一种可能的解决方案如下所示:

func setBadge(tab: Int, count: Int) {
    let tabBarController = self as? UITabBarController ?? self.tabBarController

    if let tabItems = tabBarController?.tabBar.items {
        print("Inside tabItems")

        let tabItem = tabItems[tab]

        if count != 0 {
            tabItem.badgeValue = String(count)
        } else {
            tabItem.badgeValue = nil
        }
    } else {
        print("Error: tabItems")
    }
}

关于ios - 从 UITabBarController 调用时无法获取常用函数中的选项卡项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53860494/

相关文章:

ios - 自定义 MKOverlayRenderer drawMapRect 函数不绘制多边形

objective-c - 当折叠的 UISplitViewController 显示 Detail ViewController 时如何隐藏 UITabBar?

ios - 使用委托(delegate)和 UITabBarController 转发数据

ios - 为什么这个简单的动画在 iOS 7 上不起作用?

ios - NSString 中的编码字符

ios - 在 Deprecated sizeWithFont :minFontSize:actualFontSize to get the change in font size? 中复制 actualFontSize 指针返回

ios - 从另一个委托(delegate)类中检索 UIColor

ios - 静态属性观察者

swift - TabBar shouldSelectViewController 问题

iphone - 获取 UIslider 轨道上的事件