1

我使用UITabBarUITabBarItemsUITabBarItem我可以在分配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使用新的徽章值,它会显示更新的值,但我看不到 UI 的变化。

[[self.chatTabBar.items objectAtIndex:0] setBadgeValue:[NSString stringWithFormat:@"%d", 1]];
4

2 回答 2

5

尝试一下:

UIViewController *carrinhoVC = [self.tabBarController.viewControllers objectAtIndex:0];

            carrinhoVC.tabBarItem.badgeValue = [NSString stringWithFormat:@"%d", 1];

carrinhoVC 是您要在 TabBar 中更新徽章值的 UIViewController。

于 2013-05-06T10:57:40.180 回答
1

这段代码对我有用:

if let tabBar = UIApplication.shared.keyWindow?.rootViewController as? UITabBarController,
    let tabBarItem = tabBar.tabBar.items?[1] {
    tabBarItem.badgeValue = nil
}
于 2016-10-05T08:19:30.240 回答