如何从单元格的内容视图中删除子视图?

Zhe*_*hen 10 objective-c subview uitableview ios

我在单元格的内容视图中添加了一个UIWebview

UIWebView *webview = [UIWebView alloc]init];
[cell.contentView addSubview:webview];
Run Code Online (Sandbox Code Playgroud)

现在我打算从单元格的contentview中删除"webview".

我可以这样做吗?

方法1:

[webview removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)

或者我真的需要在删除之前遍历contentview的所有子视图吗?

方法2:

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

我尝试了方法1,它似乎没有用,我不确定我是否遗漏了某些东西,或者方法2是唯一的方法

omz*_*omz 6

方法1应该可以工作,但是您确定要删除的Web视图与您添加的Web视图真的相同吗?从视图中删除给定子视图的一种简单方法是分配标记:

//...
webView.tag = 123;
[cell.contentView addSubview:webView];
//...
[[cell.contentView viewWithTag:123] removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)

在实践中,使用命名常量作为标记当然会更好.


Vij*_*com 5

    //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];
Run Code Online (Sandbox Code Playgroud)


Rob*_*ier 1

你可以只使用removeFromSuperview. “似乎不起作用”是什么意思?最可能的问题是webviewnil您调用的位置removeFromSuperview(或指向其他视图)。确保它指向您想要的视图。