2013-02-28 89 views
3

我可以通過下面的代碼在AppDelegate.m改變徽章值:如何從AppDelegate.m設置tabBarItem的徽章(tabBarView不是根視圖)

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController; 
[[tabController.viewControllers objectAtIndex:0] tabBarItem].badgeValue = @"Badge"; 

只有當tabBarViewController是窗口的根視圖控制器。

但是,在我的新程序中,tabBarController不是根視圖。

我曾嘗試下面的代碼:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UITabBarController *tabController = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"tabBarController"] ; 
[[tabController.viewControllers objectAtIndex:0] tabBarItem].badgeValue = @"Badge"; 

它只是將無法工作。 tabBarItem不顯示任何徽章。

編輯 -

我加入以下代碼來檢查呢tabController創建與否,答案是肯定的。

if (tabController) { 
    NSLog(@"tabController has been created "); 
}else { 
    NSLog(@"You have a null reference - The Object hasn't been created yet"); 
} 

答案是YES。

2013-03-01 11:57:00.600報告[14854:907] tabControllerhas一直 創建

但是,預期的徽章仍然沒有露面。

回答

2

你可以試試這個代碼羅伯特先生

 [[[[[self tabBarController] tabBar] items] objectAtIndex:0] setBadgeValue:[NSString stringWithFormat:@"%d", notificationCount ]]; 
+0

對不起,電流控制器不tabBarController,它是xxxAppDelegate.m所以,我不能用[自tabBarController] – 2013-02-28 07:03:53

+0

你可以做到這一點tabbarcontrolle的視圖控制器 – Vinodh 2013-02-28 07:07:52

+0

在我的情況下,我無法在tabBarControler中執行此操作。我必須在其他控制器中設置BadgeVlaue。 – 2013-02-28 10:53:43