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

时间:2011-09-07 13:37:47

标签: objective-c ios uitableview subview

我已将UIWebview添加到单元格的内容视图

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

现在我打算从单元格的内容视图中删除“webview”。

我可以执行以下操作吗?

方法1:

[webview removeFromSuperview];

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

方法2:

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

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

4 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分: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];

答案 2 :(得分:1)

您可以使用removeFromSuperview。你是什​​么意思“似乎不起作用?”最可能的问题是webview在您调用nil(或指向其他视图)时removeFromSuperview为{{1}}。确保它指向您的意思。

答案 3 :(得分:1)

我相信你的webview在尝试从superview中删除时是零。从内容视图中删除后,您是否尝试重新加载表数据?你在哪些方法中进行视图操作?数据源/代理或自定义IBActions?