Удаление значка подпредставления из UIBarButtonItem - PullRequest
0 голосов
/ 03 февраля 2012

Я добавляю значок в 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];

1 Ответ

3 голосов
/ 03 февраля 2012

Вы добавляете свой значок в качестве подпредставления в chatButton, а не в self.view.Ваш цикл for выполняет итерации по self.view.subviews, а значок - это не подпредставление self.view, а подпредставление chatbutton.Вам придется либо перебирать chatButton.subviews, либо создавать рекурсивный метод, который перебирает все подпредставления.Кроме того, вы можете использовать viewWithTag , который, я думаю, ищет всю иерархию.

Я бы просто поместил переменную экземпляра на значок и вызвал бы [self.badge removeFromSuperview] или self.badge.hidden = YES;

...