所以我理解了重复使用单元格查看tableviews的概念,但是我在SSCollectionViewItem中使用自定义项目时遇到了可怕的时间。这是我正在使用的代码:
- (SSCollectionViewItem *)collectionView:(SSCollectionView *)aCollectionView itemForIndexPath:(NSIndexPath *)indexPath {
static NSString *const itemIdentifier = @"itemIdentifier";
StoryCollectionViewItem *item = (StoryCollectionViewItem *)[aCollectionView dequeueReusableItemWithIdentifier:itemIdentifier];
if(item == nil){
item = [[StoryCollectionViewItem alloc] initWithReuseIdentifier:itemIdentifier];
}
NSString *sURL = [[featuredStories objectAtIndex:indexPath.row] objectAtIndex:1];
NSURL *url = [NSURL URLWithString:sURL];
[item.card.imageView setImageWithURL:url placeholderImage:nil];
return item;
}
似乎'有点'工作,但不幸的是并不完美。我得到的是大约80%的细胞正确加载,但其余的只是在它们消失在屏幕后加载然后重新出现。以下是一些截图:
答案 0 :(得分:1)
之前我遇到过这个问题,但是我覆盖了prepareForReuse方法并设置了占位符imagem并且它已经修复了
答案 1 :(得分:0)
虽然我不能肯定地说,但我建议你在这里设置图像的方式非常不标准。当桌子移动时,细胞不断回收。做一个你想要的更好的方法(但更复杂)是保持与标签相关的图像缓存(可以是单元格的indexPath。
当您被要求提供单元格时,您需要提供单元格,如果您有图像,则立即进行设置。如果没有它,则为单元格发出一个fetch,当你得到它时,将它添加到缓存中,然后查看是否需要它的单元格(通过询问tableView),以及它是否可见可见,然后设置它。