【问题标题】:How to set tabBarItem's badge from AppDelegate.m (tabBarView is not root View) [duplicate]如何从 AppDelegate.m 设置 tabBarItem 的徽章(tabBarView 不是根视图)[重复]
【发布时间】:2013-02-14 06:33:54
【问题描述】:

我可以通过以下代码更改 AppDelegate.m 中的徽章值:

UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
[[tabController.viewControllers objectAtIndex:0] tabBarItem].badgeValue = @"Badge";

仅当 tabBarViewController 是窗口的根视图控制器时。

但是,在我的新程序中,tabBarController 不是根视图。

我尝试了以下代码:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UITabBarController *tabController = (UITabBarController *)[storyboard instantiateViewControllerWithIdentifier:@"tabBarController"] ;
[[tabController.viewControllers objectAtIndex:0] tabBarItem].badgeValue = @"Badge";

它只是行不通。 tabBarItem 不显示任何徽章。

编辑-

我添加了以下代码来检查是否创建了tabController,答案是YES。

if (tabController) {
     NSLog(@"tabController has been created ");
}else {
     NSLog(@"You have a null reference - The Object hasn't been created yet");
}

答案是肯定的。

2013-03-01 11:57:00.600 报告 [14854:907] 选项卡控制器已 已创建

但是,预期的徽章仍然没有出现。

【问题讨论】:

    标签: ios uitabbarcontroller storyboard


    【解决方案1】:

    罗伯特先生,你能试试这个代码吗

           [[[[[self tabBarController] tabBar] items] objectAtIndex:0] setBadgeValue:[NSString stringWithFormat:@"%d", notificationCount ]];
    

    【讨论】:

    • 对不起,当前控制器不是tabBarController,是xxxAppDelegate.m 所以,我不能使用[self tabBarController]
    • 你可以在 tabbarcontrolle 的 viewcontroller 中做到这一点
    • 在我的情况下,我无法在 tabBarControler 中执行此操作。我必须在其他控制器中设置BadgeVlaue。
    猜你喜欢
    • 2012-09-20
    • 1970-01-01
    • 2017-06-15
    • 2010-11-11
    • 2016-11-12
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多