【问题标题】:How to remove badge from specific tab bar after clicking away from it?单击远离特定标签栏后如何从特定标签栏中删除徽章?
【发布时间】:2011-09-19 16:57:39
【问题描述】:

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

例如,徽章显示在“新闻”选项卡上,如下所示。

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

如何在应用委托中实现这一点?

编辑

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

tabController.tabBar.delegate = self;

但我不断收到以下错误

不允许更改由标签栏控制器管理的标签栏的委托。'

我该如何解决这个问题?

【问题讨论】:

  • 你应该已经接受了答案。

标签: objective-c ios tabbar badge


【解决方案1】:

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

[[tabBar.items objectAtIndex:3] setBadgeValue:nil];

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

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

【讨论】:

  • 感谢您的回复。我可以检查如何为此设置委托以便调用此方法吗?我将'UITabbarDelegate'放在头文件中,并在实现文件中设置了self.tabbarcontroller.tabbar.delegate = self,但没有奏效。有什么建议吗?
  • 控制器是UITabBarController吗?如果是这样,则无需设置协议或委托。
猜你喜欢
  • 1970-01-01
  • 2018-10-31
  • 1970-01-01
  • 2019-04-15
  • 2017-08-23
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 2013-07-30
相关资源
最近更新 更多