【问题标题】:Removing badge subview from UIBarButtonItem从 UIBarButtonItem 中删除徽章子视图
【发布时间】:2012-02-03 02:27:42
【问题描述】:

我正在向 UIBarButtonItem 添加一个徽章...效果很好。但我无法删除它。任何帮助表示赞赏。

谢谢。

代码:

MKNumberBadgeView *badge = [[MKNumberBadgeView alloc] initWithFrame:CGRectMake(45, -10, 30,30)];
badge.value = @"!";
badge.layer.cornerRadius = 10;
badge.layer.masksToBounds = YES;
badge.tag = 42;

if ([self.chatCount isEqualToString:@"1"]) {
    [chatButton addSubview:badge];
} else {
    for (UIView *view in [self.view subviews] ) { if (view.tag == 42 ) { [view removeFromSuperview]; } }
    [badge release];

}

UIBarButtonItem *chat = [[UIBarButtonItem alloc] initWithCustomView:chatButton];
self.navigationItem.rightBarButtonItem = chat;
[chat release];

【问题讨论】:

    标签: iphone uibarbuttonitem badge


    【解决方案1】:

    您将徽章作为子视图添加到 chatButton 而不是 self.view。您的 for 循环正在遍历 self.view.subviews 并且徽章不是 self.view 的子视图,而是 chatbutton 的子视图。您要么必须遍历 chatButton.subviews,要么创建一个遍历所有子视图的递归方法。或者,您可以使用viewWithTag,我认为它会搜索整个层次结构。

    我只是持有一个实例变量来标记徽章并调用 [self.badge removeFromSuperview] 或 self.badge.hidden = YES;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 1970-01-01
      • 2019-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多