How to remove a subview from a cell's content view?

Zhen picture Zhen · Sep 7, 2011 · Viewed 10.9k times · Source

I have added a UIWebview to the cell's content view

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

Now I intend to remove 'webview' from the cell's contentview.

Can I do the following?

Method 1:

[webview removeFromSuperview];

Or do I really need to loop through all the subviews of the contentview before removing it?

Method 2:

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

I tried method 1 and it didn't seem to work, am not sure if I am missing something or if method 2 is the only way to go

Answer

omz picture omz · Sep 7, 2011

Method 1 should work, but are you sure that the web view you're removing is really the same as the one you added? A simple way to remove a given subview from a view is to assign a tag:

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

In practice it would of course be better to use a named constant as the tag.