我正在尝试更改标签栏项目的徽章但没有成功。我明白标签栏控制器负责控制器的标签栏。
但是,标签栏本身的某些内容可以由视图控制器管理,例如徽章
在我的代码中我尝试了这个在视图中加载
self.tabBarItem.badgeValue = "3"
但徽章中没有任何内容
然后我尝试了:
self.tabBarController?.tabBarItem.badgeValue = "3"
哪个不起作用,好吧,我知道为什么第二个代码不起作用,它与使用导航控制器而不是导航项更改导航控件的标题相同。但我不知道为什么第一个代码不起作用
这是我的应用程序的hiechy,我在TeamsTableViewController中这样做,这是团队选项卡中的第一个视图控制器
答案 0 :(得分:8)
在您的场景中,导航控制器控制tabBarItem而不是TableViewController,因为每个TabBarController都有一个viewControllers数组,并且这些viewControllers中的每一个都与tabBarItem相关联。在您的情况下,tabBarController有两个viewControllers,它们是:
因此团队视图导航控制器是控制标签栏项目的视图控制器。
这样做可以解决您的问题
self.navigationController?.tabBarItem.badgeValue = "3"
答案 1 :(得分:1)
我知道这个问题已经很老了,但没有答案。正如威廉所说,您的导航控制器是可以控制TabBarItem的控制器。因此,为了访问它,您可以继承UINavigationController并使TabBarItem成为该类的属性。然后,您可以通过该属性访问TabBarItem。例如:
@interface MyCustomNavController : UINavigationController
@property(weak, nonatomic)IBOutlet UITabBarItem *theTabBarItem;
@end
并从您的TableController访问它:
MyCustomNavController* navController=(MyCustomNavController*)self.navigationController;
navController.theTabBarItem.badgeValue=@"3";
答案 2 :(得分:0)
试试这个
var cart: UITabBarItem = super.tabBarController.viewControllers[yourIndex].tabBarItem()
cart.badgeValue = "3"