Удаление подвида значка из UIBarButtonItem

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

person edhnb    schedule 03.02.2012    source источник


Ответы (1)


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

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

person Vinnie    schedule 03.02.2012