Я пытаюсь установить значок на панели вкладок на «1» на 4-й вкладке, когда мое приложение получает уведомление. Как ни странно, моя консоль говорит, что метод срабатывает (см. NSLog «Огонь!»), Однако значок не появляется на моем элементе панели вкладок после получения уведомления? Я что-то упускаю?
AppDelegate.m
-(void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive) {
[[NSNotificationCenter defaultCenter] postNotificationName:@"pushNotification" object:nil userInfo:userInfo];
NSLog(@"App notification received!");
// do stuff when app is active
}else{
// do stuff when app is in background
static int i=1;
[UIApplication sharedApplication].applicationIconBadgeNumber = i++;
NSLog(@"App notification received background!");
}
}
ViewController.m
- (void) myNotificationReceived:(NSNotification *) notification {
[[self.tabBarController.tabBar.items objectAtIndex:3] setBadgeValue:@"1"];
NSLog(@"Fire!");
}
- (void)viewDidLoad {
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myNotificationReceived:) name:@"pushNotification" object:nil];
}
[[self.tabBarController.tabBar.items objectAtIndex:4] setBadgeValue:@"1"]
изviewDidLoad
? Эта строка вызывается из основного потока? Возможно, у вас есть вкладка «Дополнительно...»? - person meaning-matters   schedule 28.07.2017objectAtIdex:
создает исключение для индексов за пределами границ. - person jscs   schedule 28.07.2017viewDidLoad
и напечатайте (используя командуpo
)self.tabBarController.tabBar.items
. Что вы получаете? - person meaning-matters   schedule 28.07.2017UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
Тогда вы можете установить значок как[[tabController.viewControllers objectAtIndex:3] tabBarItem].badgeValue = @"1";
? - person Piyush   schedule 29.07.2017postNotificationName
с помощью таймера.... Вызовите его через 1 сек. ..... Чтобы UITab успел инициализироваться... На всякий случай... - person Kusal Shrestha   schedule 31.07.2017