This question already has answers here:
Best way to update badgeValue of UITabBarController from a UIView

(3个答案)


6年前关闭。




我可以通过以下代码在AppDelegate.m中更改徽章值:
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");
}

答案是肯定的。

2013-03-01 11:57:00.600 Reporting [14854:907] tabController已被
被创造

但是,预期的徽章仍然没有显示。

最佳答案

罗伯特先生,您能试试这个密码吗

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

10-08 05:56