如何从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,而是重新配置它们以重新使用并删除那些视图,该单元不需要。
答
选项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];
}
}
已经尝试过
。它给我例外,它无法找到选择器的实例来删除视图。如果我想到它的行的娱乐功能。这是错误的,还是我可以重用? – 2014-08-29 13:01:12