如何从PrepareForReuse上的UITableView自定义行中删除视图?

时间:2014-08-29 12:43:49

标签: ios objective-c uitableview uiimageview

我有一个UITable视图,每一行都有一个随机数的UIImageView。在单行的构建中,我使用[self addSubView: xxx]for周期来添加我需要添加的每个UIImageView(我的模型有一个URL数组)。但是现在我注意到当UITableView重用行时它并没有清除添加的UIImageViews。 我已尝试在方法onPrepareForReuse中手动删除它们,如代码所示:

 if(_messageContentsFrames != nil){
    for(NVChatMessageContent *singleContent in _messageContentsFrames){
        [singleContent removeFromSuperview];
    }
}

但它给了我错误。如何在重用视图时完全重置视图?

2 个答案:

答案 0 :(得分:0)

您可以在-tableView:cellForRowAtIndexPath:方法中删除这些imageViews。这总是对我有用 顺便说一下,如果你用它做这样的工作,你真的需要重复使用细胞吗?创造新细胞会不会更容易?
或者最好不要删除imageViews,而是在重用时重新配置它们并删除那些不需要的单元格。

答案 1 :(得分:0)

选项1。将标记设置为UIImageView(使用:imageView.tag = 123456),然后在tableView:cellForRowAtIndexPath:中,您应该使用以下内容获取特定视图:

id imageView = [self.view viewWithTag:yourInteger];
[imageView removeFromSuperview];

选项2。使用:

for( UIView *view in cell.subviews) {
    if ([view isKindOfClass:[UIImageView class]]) {
        [view removeFromSuperView];
    } 
}