我有一个带有4个标签栏项目的导航控制器。每个人都有一个导航控制器。我希望能够在获得推送通知时更改第4个标签栏徽章编号,无论是在哪个视图或标签中我都需要使用自动布局,因此我无法在应用程序委托中使用任何编程解决方案。我从单个视图模板开始了该项目。
我试图转到所需的标签,更改徽章值并返回,但当然它不起作用。 tabBarController似乎只有对当前标签栏项的引用。
var current = self.tabBarController?.selectedIndex
self.tabBarController?.selectedIndex = 3
self.navigationController?.tabBarItem.badgeValue = "34"
self.tabBarController?.selectedIndex = current!
答案 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")