2

我试图以编程方式确定我的应用程序中的特定标签栏项目是否有徽章。

当我在调试时,视觉上,我可以清楚地看到它确实如此。但是当我在有问题的 viewController 中运行此代码时:

UITabBarItem* thisVCsTabBarItem = self.tabBarItem;
NSString* badgeValue = thisVCsTabBarItem.badgeValue;

...badgeValue 为零。当我在调试器中检查 thisVCsTabBarItem 时,它的 _badgeValue 成员为零。

这里发生了什么?在尝试从标签栏项目中读取此值时,我是否应该做一些不同的事情?

谢谢。

4

2 回答 2

2

查看我使用该UITabBarItem badgeValue属性的一些代码,我看到它self.tabBarItem.badgeValue返回nilself.navigationController.tabBarItem.badgeValue返回正确的值。会是这样吗?

问题是自动完成实际上给了我tabBarItemafter self。因此很容易犯错误。

于 2010-02-27T04:27:06.820 回答
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的 items 数组中找到您的项目。

于 2010-02-27T02:47:31.887 回答