Как удалить подпредставление из представления содержимого ячейки? - PullRequest
10 голосов
/ 07 сентября 2011

Я добавил 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 - единственный способ пойти

Ответы [ 4 ]

6 голосов
/ 07 сентября 2011

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

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

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

5 голосов
/ 07 сентября 2011
    //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];
1 голос
/ 07 сентября 2011

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

1 голос
/ 07 сентября 2011

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

...