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

问题描述:

我有一个UITable视图与随机数的UIImageView在每一行中。在单行的构造中,我使用[self addSubView: xxx]for周期来添加我需要添加的每个UIImageView(我的模型有一个URL数组)。但是现在我已经注意到,当UITableView重复使用这些行并且它不会清除添加的UIImageViews。 我绑在方法onPrepareForReuse手动删除它们作为代码:如何从PrepareForReuse上的UITableView自定义行中删除视图?

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

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

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

+0

。它给我例外,它无法找到选择器的实例来删除视图。如果我想到它的行的娱乐功能。这是错误的,还是我可以重用? – 2014-08-29 13:01:12

选项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]; 
    } 
} 
已经尝试过