удалить подвид UIView на основе тега? - PullRequest
7 голосов
/ 16 августа 2010

Я создаю вид, подобный этому:

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];

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

Полагаю, я мог бы перебрать все виды и проверить тег, но предпочел бы более элегантное и прямое решение.

1 Ответ

26 голосов
/ 16 августа 2010

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

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

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

[self.subView removeFromSuperview];
self.subView = qty;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...