如果 UITabbarcontroller 不是 rootviewcontroller,如何从 Appdelegate 为 UIBarButtonItem 设置徽章(无论何时推送通知)?

Posted

技术标签:

【中文标题】如果 UITabbarcontroller 不是 rootviewcontroller,如何从 Appdelegate 为 UIBarButtonItem 设置徽章(无论何时推送通知)?【英文标题】:How to set badge for UIBarButtonItem from Appdelegate (whenever push notification comes) if UITabbarcontroller is not the rootviewcontroller? 【发布时间】:2015-08-31 09:54:21 【问题描述】:

我在 UITabbarcontroller 之前有一个 LoginViewController 和一个 PinViewController。如果用户尚未登录,我将 LoginViewController 设置为 rootviewcontroller,如果用户已经登录,我将 PinViewController 设置为 rootviewcontroller。但我发现只有当 rootviewcontroller 是 UITabbarcontroller 时,我们才能从 Appdelegate 为 UIBarButtonItem 设置徽章。

谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

您可以通过发布通知

来管理它

//在应用代理类中

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo


    NSNumber *count = [NSNumber numberWithInt:5]; // This is static...

    NSDictionary *dataDict = [NSDictionary dictionaryWithObject:count
                                                         forKey:@"count"];

    application.applicationIconBadgeNumber = 0;

    if (application.applicationState == UIApplicationStateActive)
    
        [[NSNotificationCenter defaultCenter] postNotificationName:@"getPushNotification" object:dataDict];
    

在控制器中,您要在栏上更新徽章计数。

- (void)viewDidLoad 
    [super viewDidLoad];



    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(updateBadgeCount:)
                                                 name:@"getPushNotification"
                                               object:nil];




- (void)updateBadgeCount:(NSNotification *)note 
    NSDictionary *theData = [note userInfo];
    if (theData != nil) 
        NSNumber *n = [theData objectForKey:@"count"];


        // Do your stuff here...
    

谢谢。

【讨论】:

以上是关于如果 UITabbarcontroller 不是 rootviewcontroller,如何从 Appdelegate 为 UIBarButtonItem 设置徽章(无论何时推送通知)?的主要内容,如果未能解决你的问题,请参考以下文章

加载后是不是可以更改 UITabBarController 文本颜色?

在 Nib 而不是 Storyboard 中创建 UITabBarController

UITabBarController 选项卡充当注销按钮而不是显示相应的视图

自定义标签栏按钮,而不是 UITabBarController

iOS 5 中的 UITabBar 高度

带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController