2015-11-19 77 views
0

我有一個小問題。我想接收推後設置一個選項卡徽章,但我想不出我如何可以改變徽章值(從我的AppDelegate)Swift - 收到推後設置TabBarBadge

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

好吧,我發現了一個「解決方案」 ......我沒有發現其他的解決方案,爲我的作品...

我設置一個公共變量BadgeValue。每當我接受推動時,我都在改變它的價值。

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 
    { 
     BadgeValue = "!" 
    } 

在每一個VC對ViewDidAppear我這樣做:

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 
     } 

也許這可以幫助你,如果你有同樣的問題...(我知道,這個解決方案不夠好,但它的工作原理。不完美,但它的作品)