Я создаю такое представление:
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];
По какой-то причине это не работает, кто-нибудь видит мою проблему здесь?
Я думаю, я мог бы пройтись по всем представлениям и проверить тег, но скорее будет иметь более элегантное и прямое решение.
Проблема в том, что вы удаляете только одно представление из нескольких? Попробуйте следующее:
UIView *removeView;
while((removeView = [self.view viewWithTag:999]) != nil) {
[removeView removeFromSuperview];
}
Если создается / отмечается / удаляется только одно представление, вы также можете подумать о том, чтобы просто добавить свойство для отслеживания этого представления и написать:
[self.subView removeFromSuperview];
self.subView = qty;