如果 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
带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController