0

我正在向 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];
4

1 回答 1

3

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

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

于 2012-02-03T02:43:14.580 回答