2012-01-13 3 views
1

Я добавил несколько кнопок в self.view. Когда пользователь нажимает одну кнопку, я загружу другой вид (subView). Мой код, где я загружая подвид показано нижеУдаление из его супервизора

subView = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.scrollView.contentSize.width, self.scrollView.contentSize.height)]; 
subView.tag=1; 
// and then i add various other components to it 

[self.view addSubview:subView]; // and finally add it to the view 

Когда пользователь прикасается эта точка зрения, я его обнаружить и удалить представление (я уже сделал часть обнаружения).

Это, как я удаление мнение о

UIView *v = [self.subView viewWithTag:1]; 
    v.hidden = YES; 
    [v endEditing:YES]; 
[v removeFromSuperview]; 

мнение, пропадает, но я не могу нажать на кнопки или что-нибудь, что было на self.view. Когда я удерживаю курсор мыши на кнопке некоторое время, я мог бы щелкнуть ее, иначе я не смогу. Как я могу это решить?

ответ

1

Я думаю, ваша проблема в том, что вы делаете

[self.subView viewWithTag:1]; 

но вид вы хотите удалить, «принадлежит» self.view так это должно быть

[self.view viewWithTag:1]; 

Но если у вас есть ссылка на subView, зачем искать его снова? Почему не сразу:

self.subView.hidden = YES; 
[self.subView endEditing:YES]; 
[self.subView removeFromSuperview]; 

Btw вы можете захотеть взглянуть на ваше управление памятью, я вижу, вы Alloc своего подвида, но я не вижу его освобождения, когда вид снова удаляется. Может быть, вы это сделаете, и вы просто не показываете код, в таком случае забудьте мой комментарий.

+0

Я использую ARC. поэтому не нужно удалять – Illep

2

Если эта линия:

UIView *v = [self.subView viewWithTag:1]; 

действительно:

UIView *v = [self.view viewWithTag:1]; 

?

3

Попробуйте удалить подвид, как это:

for (UIView *subView in self.view.subviews) { 
    if (subView.tag == (int)yourSubViewTag) { 

     [subView removeFromSuperview]; 
    } 
} 
+0

Что такое 'yourSubViewTag'? что должно там прийти? – Illep

+0

тег, который вы хотите сравнить с. "1", "2" или "152" 'int yourSubViewTag = 1; subView.tag = yourSubViewTag; ' – Frade

+0

, но имеет Vicent, если у вас есть ссылка (свойство), вы можете сделать это немедленно:' [subView removeFromSuperview]; 'не нужно искать его. – Frade

Смежные вопросы