在推送的 UITabBarController 上设置徽章

Posted

技术标签:

【中文标题】在推送的 UITabBarController 上设置徽章【英文标题】:Setting badge on pushed UITabBarController 【发布时间】:2013-04-25 21:22:35 【问题描述】:

当用户单击按钮时,我创建了一个带有两个视图控制器的 UITabBarController。 然后我将 TabBarController 推到我的 navigationController 堆栈上,它显示没有问题。问题是在加载 tabbarControlelr 时尝试在其中一个标签栏项目上设置徽章,我试过:

[[self.tabBarController.viewControllers objectAtIndex:1] setBadgeValue:@"1"];

还有很多变体,但没有一个在标签栏项目上给我一个圆形的红色按钮。

有什么建议吗?

谢谢,

罗恩

编辑

编写我如何呈现 tabBarController 的代码

Airline_RosterAppDelegate *appDelegate = (Airline_RosterAppDelegate *)[[UIApplication sharedApplication] delegate];
CrewHere *vc = [[CrewHere alloc] initWithNibName:@"CrewHere" bundle:nil];
vc.title = @"Crewlist";

MessagesDetailed *mvc = [[MessagesDetailed alloc] initWithNibName:@"MessagesDetailed" bundle:nil];
mvc.title = @"Messageboard";

[tabbar setViewControllers:[NSArray arrayWithObjects:vc, mvc, nil]];
[tabbar setToolbarItems:[NSArray arrayWithObjects:@"Crewlist", @"Messageboard", nil]];

[appDelegate.navigationController pushViewController:tabbar animated:YES];

【问题讨论】:

【参考方案1】:

属性“badgeValue”是在 UITabBarItem 上定义的。你可以这样设置:

  UITabBarItem *item = [self.tabBarController.tabBar.items objectAtIndex: 1];
  item.badgeValue = @"1";
  ...

当“UITabBarController 已加载”时,上述内容将不起作用,您的代码也将不起作用。您只能在控制器出现后执行此操作,因为只有在那时您才能确定所有视图元素都实际存在。把它放在viewDidAppear:animated: 中作为tabBarController

[编辑,在你的编辑之后]

你不能用 NSString 的 NSArray 调用 setToolbarItems:;该数组需要 UITabBarItem。使用- (id)initWithTitle:(NSString *)title image:(UIImage *)image tag:(NSInteger)tag 实例化

此外,您似乎在混合使用 tool bartab bar - 它们是不同的。

【讨论】:

不,还是什么都没有。我添加了一些代码来展示我如何呈现 TabBarController。 标签栏控制器加载时无法添加徽章;只有在它出现之后。 我在TabBarController的viewDidAppear中调用代码设置badgeValue

以上是关于在推送的 UITabBarController 上设置徽章的主要内容,如果未能解决你的问题,请参考以下文章

如何在 uitabbarcontroller 中的 uibutton 单击事件上推送其他视图控制器?

从 UITabBarController 推送的 UISplitViewController

在 UITabBarController 的 UINavigationController 中推送 UIViewController

在 UITabBarController 中推送 UINavigationController 时 UITableViewCell 消失

在 UITabBarController 中推送 ViewController

从嵌套在 UITabBarController 中的导航控制器推送视图控制器?