我知道之前可能有人问过这个问题,但我遇到了出队问题。基本上,我在某种网格的单元格中使用异步图像加载。
所以基本上,我为 3 列表添加了左、中和右图像,这非常简单。我将行数设置为 15(总共大约 45 个单元格)并从数组中为每个单元格设置图像 url。
出于某种原因,前 16 个单元格在底部重复,当异步图像加载开始时,它们被正确的图像替换。如果我更换删除出队的东西,它所有加载正常并且它不会重复前 16 个 block 大约 3 次。
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
cell.contentView.autoresizesSubviews = YES;
cell.contentView.clipsToBounds = YES;
cell.backgroundColor = [UIColor clearColor];
Asynimage *leftImage;
leftImage = [[Asynimage alloc] initWithFrame:CGRectMake(0,0,IMG_SIZE,IMG_SIZE)];
leftImage.tag = 10;
[cell.contentView addSubview:leftImage];
Asynimage *middleImage;
middleImage = [[Asynimage alloc] initWithFrame:CGRectMake(IMG_SIZE,0,IMG_SIZE,IMG_SIZE)];
middleImage.tag = 20;
[cell.contentView addSubview:middleImage];
Asynimage *rightImage;
rightImage = [[Asynimage alloc] initWithFrame:CGRectMake(IMG_SIZE*2,0,IMG_SIZE,IMG_SIZE)];
rightImage.tag = 30;
[cell.contentView addSubview:rightImage];
}
Asynimage *leftImage=(Asynimage*)[cell.contentView viewWithTag:10];
Asynimage *middleImage=(Asynimage*)[cell.contentView viewWithTag:20];
Asynimage *rightImage=(Asynimage*)[cell.contentView viewWithTag:30];
/*Set the urls on those 3 then do the loadimagefrom url*/
最佳答案
双端队列不会复制行,但它会触发单元格的重用,这些单元格在之前为不再可见的行实例化,以优化内存使用。效果正是您所描述的重复。 在它们被取消队列后,用 subview 填充重用的单元格。将异步图像存储在一个数组中,并使用行索引将它们放在正确的单元格中。
关于iphone - UITableview dequeueReusableCellWithIdentifier 重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10020062/