我正在尝试检索指定标签的值显示。它以前工作过,因某种原因停了下来?下面代码中的int current_badge =
行是获取徽章值的位置,无论徽章值实际是什么,都会返回零。我在一个视图控制器中被一个uitabcontroller所迷惑。任何人都对我做错了什么有任何想法?
UPDATE:这似乎是因为我在一个制表控制器的视图控制器中。将相同的代码移动到选项卡视图控制器,它工作正常。有没有更好的方法来确定tabcontroller中的徽章值,当它被勾勒出来时?
-(void)badgeUpdate:(int)tab:(int)dayspan
{
// getting the current badge amount
int current_badge = [[[super.tabBarController.viewControllers objectAtIndex:tab] tabBarItem].badgeValue intValue];
// testing for badge level
if (current_badge > 0)
{
// testing for updates on tab for dayspan or longer
int updates_waiting = [self updatesWaitingCheck:tab:dayspan];
if (updates_waiting > 0)
{
// setting new badge level on tab
[[[[[self tabBarController] viewControllers] objectAtIndex:tab] tabBarItem] setBadgeValue:[NSString stringWithFormat:@"%d", updates_waiting]];
}
else
{
// turning off badge display
[[[[[self tabBarController] viewControllers] objectAtIndex:tab] tabBarItem] setBadgeValue:nil];
}
}
}
答案 0 :(得分:1)
切换时,该选项卡的控制器可能会被释放。我建议移动逻辑来确定视图层的当前计数,并建议在所有选项卡中保持更高级别的控制器。否则,你会遇到你所看到的问题。
大多数情况下,如果你在视图对象中寻找数据值,而不是在某个地方的控制器或模型中寻找数据值,那么你就是在反对框架,你会遇到这样的问题。