我有一个UITable视图,每一行都有一个随机数的UIImageView。在单行的构建中,我使用[self addSubView: xxx]
和for
周期来添加我需要添加的每个UIImageView
(我的模型有一个URL数组)。但是现在我注意到当UITableView重用行时它并没有清除添加的UIImageViews
。
我已尝试在方法onPrepareForReuse
中手动删除它们,如代码所示:
if(_messageContentsFrames != nil){
for(NVChatMessageContent *singleContent in _messageContentsFrames){
[singleContent removeFromSuperview];
}
}
但它给了我错误。如何在重用视图时完全重置视图?
答案 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];
}
}