我有点问题。我希望在收到推送后在选项卡上设置徽章,但我无法弄清楚如何更改徽章值(来自我的AppDelegate)
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
{
print("didReceiveRemoteNotification")
//can't find or access the tabBarItem...
}
我尝试了不同的东西。有一次我在打开时得到一个零,有时候我正在创建一个新的TabBarController,我可以更改徽章值...但问题是它不是显示的TabBar。 (首先是零,第二是“新”)
这里有些尝试:
let tabBarC = self.storyboard?.instantiateViewControllerWithIdentifier("TC")
let items = tabBarC?.tabBarController?.tabBar.items
let tab = items![3]
tab.badgeValue = "999"
let tabBarController: UITabBarController = storyboard!.instantiateViewControllerWithIdentifier("TC") as! UITabBarController
let tabArray = tabBarController.tabBar.items as NSArray!
let tabItem = tabArray.objectAtIndex(3) as! UITabBarItem
tabItem.badgeValue = "!"
print(tabItem.title)
啊,我的TabBarController不是我的rootViewController
你有什么建议可以解决这个问题吗?
谢谢:)
答案 0 :(得分:0)
好的,我找到了一个"解决方案" ...我没有找到适合我的其他解决方案......
我正在设置一个公共变量BadgeValue。每次我接受推动,我都会改变它的价值。
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
{
BadgeValue = "!"
}
在ViewDidAppear的每个VC中,我这样做:
BadgeValue = "" //Just in the Tab where the BadgeValue is shown
let tabArray = tabBarController?.tabBar.items as NSArray!
let tabItem = tabArray.objectAtIndex(3) as! UITabBarItem
if(BadgeValue != ""){
tabItem.badgeValue = BadgeValue
} else {
tabBarItem.badgeValue = .None
}
如果您遇到同样的问题,也许这会对您有所帮助......(我知道这个解决方案并不好但是有效。不完美但有效)