我有一点问题。我想在收到推送后在选项卡上设置徽章,但是我不知道如何更改徽章值(来自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/

10-11 17:24