Как удалить подвью из представления содержимого ячейки?

Я добавил UIWebview в представление содержимого ячейки

UIWebView *webview = [UIWebView alloc]init];
[cell.contentView addSubview:webview];

Теперь я намерен удалить "webview" из содержимого содержимого ячейки.

Могу ли я сделать следующее?

Метод 1:

[webview removeFromSuperview];

Или мне действительно нужно перебирать все подзоны содержимого, прежде чем удалять его?

Метод 2:

for (UIView *subview in [self.contentView subviews]) 
{
    if ([subview isKindOfClass:[UIWebView class]]) 
    {
        [subview removeFromSuperview];
    }
}

Я пробовал метод 1, и он, похоже, не работал, я не уверен, что у меня что-то не хватает или метод 2 - единственный способ пойти

Ответ 1

Метод 1 должен работать, но уверены ли вы, что удаленный веб-просмотр действительно такой же, как тот, который вы добавили? Простым способом удаления данного представления в представлении является назначение тега:

//...
webView.tag = 123;
[cell.contentView addSubview:webView];
//...
[[cell.contentView viewWithTag:123] removeFromSuperview];

На практике было бы, конечно, лучше использовать именованную константу в качестве тега.

Ответ 2

    //creating

// cell.bounds will fill up the cell with your webview
UIWebView *webview = [[UIWebView alloc]initWithFrame:cell.bounds];

webview.tag = 11;

[cell.contentView addSubview:webview];  

    //removing


[[cell.contentView viewWithTag:11] removeFromSuperview];

Ответ 3

Вы можете просто использовать removeFromSuperview. Что вы подразумеваете под "не работали?" Наиболее вероятная проблема заключается в том, что webview является nil в точке, которую вы назвали removeFromSuperview (или указывает на другое представление). Убедитесь, что он указывает на вид, который вы имеете в виду.

Ответ 4

Я считаю, что ваш веб-просмотр ничтожен при попытке удалить из супервизора. Вы пытались перезагрузить данные таблицы после удаления из представления содержимого? В каких методах вы выполняете манипуляции с просмотром? Datasource/делегат или пользовательские IBActions?