指定したタブに表示されている値を取得しようとしています。以前は機能していたのに、何らかの理由で停止しましたか? 以下のコードのint current_badge =
行は、バッジの値が取得される場所であり、実際のバッジの値に関係なくゼロを返します。私は、uitabcontroller から切り離された viewcontroller にいます。私が間違っていることについて誰か考えがありますか?
更新: タブコントローラーから離れたビューコントローラーにいるためと思われます。同じコードをタブ ビュー コントローラーに移動すると、正常に動作します。タブコントローラーから切り離されたときにバッジの値を決定するより良い方法はありますか?
-(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];
}
}
}