Swift - 接收推送后设置TabBarBadge

时间:2015-11-19 17:33:25

标签: ios swift push tabbar badge

我有点问题。我希望在收到推送后在选项卡上设置徽章,但我无法弄清楚如何更改徽章值(来自我的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

你有什么建议可以解决这个问题吗?

谢谢:)

1 个答案:

答案 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
        }

如果您遇到同样的问题,也许这会对您有所帮助......(我知道这个解决方案并不好但是有效。不完美但有效)