每次调用以下方法时,我都希望在标签栏上显示徽章值。 NSLog
出现在控制台中,因此该方法可以正常工作,但无论如何都不会出现标签栏徽章。我做错了吗?或者这部分应该是好的,我错过了其他地方的东西?
// AppDelegate.m
- (void)pubnubClient:(PubNub *)client didReceiveMessage:(PNMessage *)message {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tab"];
UITabBarController *tabController = (UITabBarController *)tabBarController;
[[tabController.viewControllers objectAtIndex:0] tabBarItem].badgeValue = @"1";
NSLog(@"SHOW BADGE");
}
答案 0 :(得分:1)
UINavigationController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tab"];
UITabBarController *tabController = (UITabBarController *)tabBarController;
这一行(除了奇怪的多重转换)实例化一个 new 标签栏控制器,它不会返回对现有标签栏的引用。您应该保留对现有标签栏控制器的引用,而不是创建新的标签栏控制器。
根据您的设置,您可以使用以下代码:
UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;