我知道这可能是之前被问过但我遇到了出队的问题。基本上,我在某种网格的单元格中使用异步图像加载。
基本上,我为3列表添加了左,中,右图像,这非常简单。我将行数设置为15(总共约45个单元格),并从数组中为每个行设置图像URL。
出于某种原因,前16个单元格在底部重复,当异步图像加载开始时,它们被右图像替换。如果我替换删除出队的东西,那么它们都会很好地加载并且它不会重复前面的16个块大约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*/
答案 0 :(得分:1)
deque不会复制行,但它会触发对单元的重用,这些单元之前已经为不再可见的行实例化,以优化内存使用。效果正是您所描述的重复。 在获得dequed后,使用子视图填充重复使用的单元格。将异步映像存储在一个数组中,并使用行索引将它们放在正确的单元格上。