我有tableview,我想显示目录中一个文件夹中的所有图像,并且我有到该目录的路径。我正在将图像加载到单元格中:
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
for (UIView * view in cell.contentView.subviews){
if ([view isKindOfClass:[UIButton class]]) {
[view removeFromSuperview];
}
}
cell.imageView.image = nil;
cell.accessoryType = UITableViewCellAccessoryNone;
NSData *imgData = [NSData dataWithContentsOfFile:absoluteImagePath];
UIImage *thumbNail = [[UIImage alloc] initWithData:imgData];
UIImageView *imageView = [[UIImageView alloc] initWithImage:thumbNail];
[cell insertSubview:imageView atIndex:0];
}
但是当我向上和向下滚动时,我在图像内部获取图像(旧图像在新图像下方可见,当我滚动时例如第一个位置我看到图像在其他图像下面的索引0)。 有谁知道什么是问题,我是这个iOS编程的新手吗?
答案 0 :(得分:1)
你应该
好处:
(cell==nil)
答案 1 :(得分:1)
当重复使用该单元格时,[cell insertSubview:imageView atIndex:0];
会向该单元格添加额外的UIImageView
。建议是创建自定义UITableViewCell
,并在prepareForReuse
方法中删除UIImageView
。识别要删除的UIImageView
的简便方法是向其添加tag
。如,
imageView.tag = 1000;
然后您可以使用
找到图像视图UIImageView *imageView = [self.contentView viewWithTag:1000];
if (imageView) {
[imageView removeFromSuperview];
}
答案 2 :(得分:0)
声明UIImageView初始化单元格的位置。 例如
if (cell==nil)
{
UIImageView *image = [[UIImageView alloc]initWithFrame:yourFrame];
[cell addSubView:image];
}
image.image = yourImage;
或者,您可以在将新的UIImageView添加为子视图之前从单元格中删除所有子视图。