更新Swift中未选中tabBarItem的徽章

时间:2014-11-27 01:26:11

标签: ios swift uitabbarcontroller

我有一个带有4个标签栏项目的导航控制器。每个人都有一个导航控制器。我希望能够在获得推送通知时更改第4个标签栏徽章编号,无论是在哪个视图或标签中我都需要使用自动布局,因此我无法在应用程序委托中使用任何编程解决方案。我从单个视图模板开始了该项目。

我试图转到所需的标签,更改徽章值并返回,但当然它不起作用。 tabBarController似乎只有对当前标签栏项的引用。

    var current = self.tabBarController?.selectedIndex
    self.tabBarController?.selectedIndex = 3
    self.navigationController?.tabBarItem.badgeValue = "34"
    self.tabBarController?.selectedIndex = current!

3 个答案:

答案 0 :(得分:35)

无需选择该索引来更新徽章值。获取一系列标签栏项目。要更新的索引处的选择项,然后将其设置为徽章值。见下面我为第四个标签栏项目做了。

Swift 4.0编辑:

let tabArray = self.tabBarController?.tabBar.items as NSArray!
let tabItem = tabArray?.object(at: 3) as! UITabBarItem
tabItem.badgeValue = "34"

答案 1 :(得分:7)

更短:

let tabItem = self.tabBarController?.tabBar.items![3]
let tabItem.badgeValue = "34"

答案 2 :(得分:2)

extension UITabBarController {
    func increaseBadge(indexOfTab: Int, num: String) {
        let tabItem = tabBar.items![indexOfTab]
        tabItem.badgeValue = num
    } 
}

你可以这样称呼它:

self.tabBarController?.increaseBadge(indexOfTab: 3, num: "34")