【问题标题】:Badge on the tab bar item did not show标签栏项目上的徽章未显示
【发布时间】:2012-07-22 15:47:33
【问题描述】:

在我的应用程序中,我的 tabBar 项的徽章值设置在 AppDelegate.m 中,如下所示:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ...
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UITabBarController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tabBarController"]; 
    [[tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"1"];
    ...
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    ...
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UITabBarController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tabBarController"]; 
    [[tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"2"];
    ...
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    ...
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UITabBarController *tabBarController = [storyboard instantiateViewControllerWithIdentifier:@"tabBarController"]; 
    [[tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"3"];
    ...
}

问题是:徽章值始终为“1”。为什么applicationWillEnterForeground:applicationDidBecomeActive: 中设置的徽章值永远不会出现?如果我没有在application: didFinishLaunchingWithOptions: 中设置徽章值,则那里没有显示徽章。

【问题讨论】:

  • 我现在也有同样的问题。我将徽章值设置为 applicationDidBecomeActive。我可以在调试中看到正确的值,但是当我的标签栏被可视化时,我失去了徽章值!!!!为什么?有解决办法吗?
  • @Blasco73 请检查其他人的答案和回复:)

标签: iphone ios uitabbaritem badge


【解决方案1】:

@Meno 谢谢哥们。它对我有用。

复制粘贴即可

[[tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"2"]; 

viewDidLoad.

【讨论】:

    【解决方案2】:

    您需要阅读 UIApplicationDelegate 协议以及各种状态转换。 applicationDidBecomeActive 转换不会在启动时发生,只有在手机中发生一组状态更改时才会发生。

    【讨论】:

    • 在我的情况下调用了 applicationDidBecomeActive。问题是那里设置的徽章永远不会出现在标签栏项目上。谢谢你回答:)
    • 徽章值已被修改,因为我可以使用修改后的徽章值记录它。但它不会出现在标签栏项目上。
    • 我不使用情节提要,但是当您修改徽章值时,UITablBarController 必须已成为窗口的 rootViewController,并使其可见等。您可能正在尝试创建一些东西并设置它的值只是为了稍后覆盖该对象。如果您可以推迟更新徽章项目,直到您确定标签栏显示它应该可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多