在推送的 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 bar
和 tab bar
- 它们是不同的。
【讨论】:
不,还是什么都没有。我添加了一些代码来展示我如何呈现 TabBarController。 标签栏控制器加载时无法添加徽章;只有在它出现之后。 我在TabBarController的viewDidAppear中调用代码设置badgeValue以上是关于在推送的 UITabBarController 上设置徽章的主要内容,如果未能解决你的问题,请参考以下文章
如何在 uitabbarcontroller 中的 uibutton 单击事件上推送其他视图控制器?
从 UITabBarController 推送的 UISplitViewController
在 UITabBarController 的 UINavigationController 中推送 UIViewController
在 UITabBarController 中推送 UINavigationController 时 UITableViewCell 消失