我有一点问题。我想在收到推送后在选项卡上设置徽章,但是我不知道如何更改徽章值(来自AppDelegate)
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
{
print("didReceiveRemoteNotification")
//can't find or access the tabBarItem...
}
我尝试了不同的事情。有一次我在展开时得到零,有时我创建了一个新的TabBarController,我可以更改标志Value。但是问题是它不是显示的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
您有什么建议可以解决吗?
谢谢 :)
最佳答案
好吧,我找到了一个“解决方案” ...我没有找到另一个适合我的解决方案...
我正在设置一个公共变量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
}
如果您遇到相同的问题,这可能会对您有所帮助...(我知道此解决方案不好,但是可以用。不是完美的,但是可以使用)
关于ios - Swift-收到推送后设置TabBarBadge,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33810601/