удалить подпредставление UIView на основе тега?

Я создаю такое представление:

UILabel *qty = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
qty.backgroundColor = [UIColor whiteColor];
qty.text =[NSString stringWithFormat:@" Qty: %@", currentQty];
qty.alpha = 0.5;
[qty setTag:999];
[self.view addSubview:qty];
[qty release];

Это может происходить несколько раз в этом контроллере представления, поэтому перед тем, как создать новое представление, подобное это я хочу удалить все, что может существовать с этим тегом, я пытаюсь это:

UIView *removeView  = [self.view viewWithTag:999];
[removeView removeFromSuperview];

По какой-то причине это не работает, кто-нибудь видит мою проблему здесь?

Я думаю, я мог бы пройтись по всем представлениям и проверить тег, но скорее будет иметь более элегантное и прямое решение.

7
задан Slee 16 August 2010 в 14:47
поделиться

1 ответ

Проблема в том, что вы удаляете только одно представление из нескольких? Попробуйте следующее:

UIView *removeView;
while((removeView = [self.view viewWithTag:999]) != nil) {
    [removeView removeFromSuperview];
}

Если создается / отмечается / удаляется только одно представление, вы также можете подумать о том, чтобы просто добавить свойство для отслеживания этого представления и написать:

[self.subView removeFromSuperview];
self.subView = qty;
26
ответ дан 6 December 2019 в 06:48
поделиться