Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uitableview 无法从tableview自定义单元格中删除子视图_Uitableview_Custom Cell - Fatal编程技术网

Uitableview 无法从tableview自定义单元格中删除子视图

Uitableview 无法从tableview自定义单元格中删除子视图,uitableview,custom-cell,Uitableview,Custom Cell,当表格滚动时,它将在单元格上重复子视图,我使用下面的代码在表格视图自定义单元格上显示嵌入视图。任何人都知道,所以请帮助我。如何解决这个问题 long tag = 100 + indexPath.row; URLEmbeddedView *embeddedView = [custom.contentView viewWithTag:tag]; if ([custom.contentView viewWithTag:tag]) { [embeddedView loadURL:@"" com

当表格滚动时,它将在单元格上重复
子视图
,我使用下面的代码在
表格视图自定义
单元格上显示嵌入视图。任何人都知道,所以请帮助我。如何解决这个问题

long tag = 100 + indexPath.row;
URLEmbeddedView *embeddedView = [custom.contentView viewWithTag:tag];

if ([custom.contentView viewWithTag:tag]) {
    [embeddedView loadURL:@"" completion:nil];
    [embeddedView removeFromSuperview];
}

embeddedView = [[URLEmbeddedView alloc] initWithFrame:CGRectMake(35, 60, 220, 110)];
//URLEmbeddedView *embeddedView = [[URLEmbeddedView alloc] initWithFrame:CGRectMake(custom.img_bgOther.frame.origin.x + 35, custom.img_bgOther.frame.origin.y + 50, 220, 110)];

embeddedView.tag = tag;
[custom.contentView addSubview:embeddedView];
[embeddedView loadURL:str_Website completion:nil];

您问题中的代码可能来自
cellforrowatinexpath:
方法。您描述的问题是重复使用单元的结果。屏幕外滚动的行的单元格将重新用于屏幕上滚动的行。假设第0行被滚动到屏幕外。它将有一个带有标签100的嵌入式视图。假设它被第10行重用。上面的代码将尝试查找标记为110的视图,并将其从superview中删除。由于标记不匹配,因此不会删除现有的嵌入视图,并在其上添加新的嵌入视图

我建议你用不同的方式做事。您不应该在
cellforrowatinexpath
中添加和删除嵌入式视图。您有一个自定义单元,因此只需在其中设计嵌入式视图即可。在自定义单元格类中创建
urlebeddedView
属性,这样您就可以访问该子视图,而无需使用
viewWithTag
。您可以使用该属性为当前行调用具有正确值的
loadURL:completion:
方法


当单元格被重用时,tableView将调用单元格的
prepareforeuse
方法。因此,在自定义单元格类中重写该方法,并在该点清除loadURL/完成。

您的问题中的代码可能来自
cellforrowatinexpath:
方法。您描述的问题是重复使用单元的结果。屏幕外滚动的行的单元格将重新用于屏幕上滚动的行。假设第0行被滚动到屏幕外。它将有一个带有标签100的嵌入式视图。假设它被第10行重用。上面的代码将尝试查找标记为110的视图,并将其从superview中删除。由于标记不匹配,因此不会删除现有的嵌入视图,并在其上添加新的嵌入视图

我建议你用不同的方式做事。您不应该在
cellforrowatinexpath
中添加和删除嵌入式视图。您有一个自定义单元,因此只需在其中设计嵌入式视图即可。在自定义单元格类中创建
urlebeddedView
属性,这样您就可以访问该子视图,而无需使用
viewWithTag
。您可以使用该属性为当前行调用具有正确值的
loadURL:completion:
方法

当单元格被重用时,tableView将调用单元格的
prepareforeuse
方法。因此,在自定义单元格类中重写该方法,并在该点清除loadURL/completion