未设置标签栏控制器徽章?

Tab Bar Controller badge not being set?

我正在尝试从标签栏控制器 class 设置标签栏项目的徽章,但它不起作用。

首先,我通过将其拖出到情节提要中来创建 TabBarController

然后,我创建三个 ViewControllers 并将它们连接到 TabBarController

然后我创建了四个class,第一个是TabBarController class,其余的是ViewControllerClasses

然后,我 link 将 classes 添加到故事板元素,例如:

然后,在 TabBarViewController class 中,我将这段代码添加到 ViewDidLoad 方法中。

- (void)viewDidLoad {
[super viewDidLoad];

[[[[[self tabBarController] tabBar] items] objectAtIndex:1] 

setBadgeValue:@"1"];
}

现在,当我 运行 应用程序时,我希望第二个标签栏项目有一个值为 @"1" 的徽章,但是,标签栏的 none 显示有徽章吗?!

我的问题是我想更新其中一个标签栏项目的徽章,但它不起作用。 此外,重要的是我可以将标签栏徽章的值设置为 未加载 的视图控制器的标签栏项目,这部分对于我的应用程序可以工作了。

那么为什么这不起作用,我怎样才能让它起作用?

[[[[self tabBarController] tabBar] items] objectAtIndex:1]

因为self是一个UITabBarViewController,所以不需要再获取tabBarController。使用下面的代码获取 UITabBarItem

[[[self tabBar] items] objectAtIndex:1]