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

10

我已经将一个UIWebview添加到单元格的内容视图中。

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

现在我打算从单元格的contentview中删除'webview'。

我可以这样做吗?

方法1:

[webview removeFromSuperview];

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

方法二:

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

我尝试了方法1,但好像没有起作用,不确定是我漏掉了什么还是只有方法2可行。


1
方法2就是我一直在寻找的。谢谢! - napolux
4个回答

6

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

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

实际上,最好使用命名常量作为标记。


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];

1
你可以直接使用removeFromSuperview。你所说的“似乎没有起作用”是什么意思?最可能的问题是在调用removeFromSuperview时,webviewnil(或指向其他视图)。确保它指向你想要的视图。

1

我相信当你尝试从superview中移除webview时,它实际上是nil的。你是否尝试在将其从content view中移除后重新加载表格数据?你是在哪些方法中进行视图操作?是数据源/代理还是自定义IBActions?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接