如何在点击后从特定标签栏中删除徽章?

Zhe*_*hen 2 objective-c tabbar badge ios

我只想在用户点击带有徽章的标签栏后,才能从标签栏中删除徽章

例如,徽章显示在"新闻"标签上,如下所示.

在此输入图像描述

如果我点击"新闻"标签,徽章仍会显示.只有在点击任何其他标签(新闻除外)后,徽章才会消失.

如何在app委托中实现此功能?

编辑

我尝试通过以下代码设置UITabbardelegate:

tabController.tabBar.delegate = self;
Run Code Online (Sandbox Code Playgroud)

但我不断收到以下错误

不允许更改由标签栏控制器管理的标签栏的代理.

我该如何解决这个问题?

Wri*_*sCS 10

在您的情况下,1徽章位于index 3选项卡上,因此您可以:

[[tabBar.items objectAtIndex:3] setBadgeValue:nil];
Run Code Online (Sandbox Code Playgroud)

由您决定用户何时点击带有徽章的选项卡,您可以通过首先tag为您的tabbar项目分配一个来获得反馈,然后使用:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{ 
    switch (item.tag) 
    {
        case 3: /* News */
            /* Tabbar item #3 was pressed, do something here. */
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)