我正在尝试以编程方式弄清楚我的应用中的特定标签栏项目是否有徽章。
当我在视觉上调试时,我可以清楚地看到它确实如此。但是,当我在有问题的viewController中运行此代码时:
UITabBarItem* thisVCsTabBarItem = self.tabBarItem;
NSString* badgeValue = thisVCsTabBarItem.badgeValue;
... badgeValue为零。当我在调试器中检查thisVCsTabBarItem时,它的_badgeValue成员是nil。
这里发生了什么?我是否应该尝试从标签栏项目中读取此值?
感谢。
答案 0 :(得分:2)
查看我使用UITabBarItem
badgeValue
属性的一些代码,我看到self.tabBarItem.badgeValue
返回nil
,而self.navigationController.tabBarItem.badgeValue
返回正确的值。可能是吗?
事情是自动完成实际上在tabBarItem
之后给了我self
。因此而容易犯错误。
答案 1 :(得分:1)
我为“下载”标签执行了类似的操作:
for (UITabBarItem* item in self.tabBarController.tabBar.items) {
if (item.tag == 3) {
if (downloadCount > 0) {
item.badgeValue = [NSString stringWithFormat: @"%d", downloadCount];
} else {
item.badgeValue = nil;
}
}
}
我认为你不应该直接访问tabBarItem。最好在tabBarController
的项目数组中找到您的项目。