由于prepareForReuse,当图像在单元格中时,UITableView滚动错误

时间:2014-10-18 13:50:58

标签: ios objective-c uitableview

我有UITableViewCell显示文字和可选图片。然而,当显示图像时,它变得有点儿麻烦,因为在-(void)prepareForReuse:中我将imageCell的{​​{1}}设置为nil,并且在滚动时需要在每个图像中加载图像时间。

在我的tableViewCell中,这是我用来准备重用的代码:

customTableViewCell.m

通过删除行- (void)prepareForReuse { [super prepareForReuse]; self.noteLabel.text = nil; self.textLabel.text = nil; self.imageCell.image = nil; self.personImage = nil; } ,某些单元格将复制其他self.imageCell.image = nil;中的imageCell,因此我必须使用UITableViewCells方法。

如果在加载所有单元格时它有图像,有没有办法不将prepareForReuse设置为nil?我试过了

imageCell

我试着说:如果if(self.iamgeCell.image == nil){ self.imageCell.image = nil; } 在重用之前为空,请在准备重用时将其设置为nil,但这样做效果不佳。

这是我目前如何使用imageCell方法加载图片:

cellForRowAtIndex

1 个答案:

答案 0 :(得分:2)

有几件事。您发布的此代码中的逻辑是向后的,并且不会做任何事情:

if(self.iamgeCell.image == nil){
   self.imageCell.image = nil;

用英语表示"如果图像为零,则将其设置为nil。你想要反过来:

if(self.iamgeCell.image != nil){
   self.imageCell.image = nil;

英文表示表示"如果图片不是nil,请将其设置为nil。

但是总是希望它为零,所以为什么要检查,只需在prepareForReuse中将其设置为nil。

 self.imageCell.image = nil;

我通常不会实现prepareForReuse。相反,在我的数据源方法中,我总是完全配置一个单元格,将所有字段设置为显式值(图像,如果他们不需要图像,则为零)将此视为重新使用纸质表单。您必须删除上一个用户写入的所有字段。