2012-07-24 97 views
1

在我的應用程序,我的TabBar項目的徽章值被設置在AppDelegate.m,如下:徽章標籤欄項目沒有顯示

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    ... 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    UITabBarController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tabBarController"]; 
    [[tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"1"]; 
    ... 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    ... 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    UITabBarController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tabBarController"]; 
    [[tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"2"]; 
    ... 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    ... 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    UITabBarController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tabBarController"]; 
    [[tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"3"]; 
    ... 
} 

問題是:徽章值始終爲「1」。爲什麼在applicationWillEnterForeground:applicationDidBecomeActive:中設置的徽章值永遠不會出現?如果我沒有在application: didFinishLaunchingWithOptions:中設置徽章值,那裏沒有顯示徽章。

+2

嘗試將其設置在viewDidLoad – 2012-07-24 10:38:12

+0

我現在有同樣的問題。我將徽章值設置爲applicationDidBecomeActive。我可以在調試中看到正確的值,但是當我的標籤欄可視化時,我失去了徽章值! 爲什麼?有解決方案嗎? – Blasco73 2013-12-21 09:13:58

+0

@ Blasco73 Plz檢查他人的答案和回覆:) – 2013-12-21 09:27:12

回答

3

您需要閱讀UIApplicationDelegate協議和各種狀態轉換。只有在手機發生一組狀態更改時,applicationDidBecomeActive轉換纔會在啓動時發生。

+0

這裏applicationDidBecomeActive調用我的情況。問題是徽章設置永遠不會出現在標籤欄項目上。 Thx爲你回答:) – 2012-07-24 12:18:01

+0

徽章值已被修改,因爲我可以用修改的徽章值記錄它。但它不會出現在標籤欄項目上。 – 2012-07-24 12:22:05

+0

我不使用故事板,但是當您修改徽章值時,必須將UITablBarController製作爲窗口的rootViewController,並使之可見等。您可能試圖創建某些內容並將其值設置爲僅具有該對象稍後被覆蓋。如果您可以推遲更新徽章項目,請確保標籤欄顯示它應該有效。 – 2012-07-24 13:09:53

2

@Meno謝謝哥們。它爲我工作。

只要複製粘貼

[[tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"2"]; 
viewDidLoad

相關問題