BadgeValue не обновляется на UITabBarItem
Я использую UITabBar
а также UITabBarItems
с этим. Я могу установить значение значка для UITabBarItem
перед назначением tabBarItem
в tabBar
, Но моя проблема в том, что я не могу обновить значение значка tabBarItem
,
Вот код, в котором я могу изначально установить значение значка:
// array of tabBarItems
NSMutableArray * tabs = [[NSMutableArray alloc] init];
for(iterates few times)
{
[tabs addObject:[[UITabBarItem alloc] initWithTitle:firstName image:nil tag:i]];
// set tabItem's property
[(UITabBarItem *)[tabs objectAtIndex:i] setFinishedSelectedImage:[self convertImage:iconImage toSize:CGSizeMake(iconWidth, TAB_ICON_HEIGHT)] withFinishedUnselectedImage:[self convertImage:iconImage toSize:CGSizeMake(iconWidth, TAB_ICON_HEIGHT)]];
[[tabs objectAtIndex:0] setBadgeValue:[NSString stringWithFormat:@"%d", 2]];
}
// setting items of UITabBar
[self.chatTabBar setItems:tabs];
Здесь я пытаюсь обновить значение значка. Так что же происходит, если я NSLog
новое значение значка показывает обновленное значение, но я не вижу изменений в пользовательском интерфейсе.
[[self.chatTabBar.items objectAtIndex:0] setBadgeValue:[NSString stringWithFormat:@"%d", 1]];
2 ответа
Решение
Попытайся:
UIViewController *carrinhoVC = [self.tabBarController.viewControllers objectAtIndex:0];
carrinhoVC.tabBarItem.badgeValue = [NSString stringWithFormat:@"%d", 1];
carrinhoVC - это UIViewController, который вы хотите обновить значение значка внутри TabBar.
Этот код работал для меня:
if let tabBar = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController,
let tabBarItem = tabBar.tabBar.items?[1] {
tabBarItem.badgeValue = nil
}