gpt4 book ai didi

ios - 当选项卡栏不是 Root View Controller 时,无法更改 App Delegate 中的 UITabBarController 角标(Badge)

转载 作者:行者123 更新时间:2023-11-29 01:48:34 25 4
gpt4 key购买 nike

每次调用以下方法时,我都想在我的标签栏上显示一个角标(Badge)值。 NSLog 出现在控制台中,因此该方法可以正常工作,但无论如何标签栏角标(Badge)都不会出现。我做错了吗?或者这部分应该是好的,我错过了其他地方的东西?

// 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");

}

最佳答案

UINavigationController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tab"];
UITabBarController *tabController = (UITabBarController *)tabBarController;

这一行(除了奇怪的多重转换)实例化了一个标签栏 Controller ,它不返回对现有 Controller 的引用。您应该保留对现有选项卡栏 Controller 的引用,而不是创建新的选项卡栏 Controller 。

根据您的设置,您也许可以使用以下内容:

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;

关于ios - 当选项卡栏不是 Root View Controller 时,无法更改 App Delegate 中的 UITabBarController 角标(Badge),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com