iOS - 从标签中检索的徽章值不正确

时间:2013-03-03 16:44:15

标签: iphone ios uitabbarcontroller badge

我正在尝试检索指定标签的值显示。它以前工作过,因某种原因停了下来?下面代码中的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];
        }
    }
}

1 个答案:

答案 0 :(得分:1)

切换时,该选项卡的控制器可能会被释放。我建议移动逻辑来确定视图层的当前计数,并建议在所有选项卡中保持更高级别的控制器。否则,你会遇到你所看到的问题。

大多数情况下,如果你在视图对象中寻找数据值,而不是在某个地方的控制器或模型中寻找数据值,那么你就是在反对框架,你会遇到这样的问题。