Как удалить подвью из представления содержимого ячейки?
Я добавил 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?