2013-02-28 46 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