使用SSCollectionView重用Cell Confusion

时间:2012-07-23 20:48:05

标签: iphone ios uitableview reusability sstoolkit

所以我理解了重复使用单元格查看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%的细胞正确加载,但其余的只是在它们消失在屏幕后加载然后重新出现。以下是一些截图:

Cells not loaded After they reappear on screen

2 个答案:

答案 0 :(得分:1)

之前我遇到过这个问题,但是我覆盖了prepareForReuse方法并设置了占位符imagem并且它已经修复了

答案 1 :(得分:0)

虽然我不能肯定地说,但我建议你在这里设置图像的方式非常不标准。当桌子移动时,细胞不断回收。做一个你想要的更好的方法(但更复杂)是保持与标签相关的图像缓存(可以是单元格的indexPath。

当您被要求提供单元格时,您需要提供单元格,如果您有图像,则立即进行设置。如果没有它,则为单元格发出一个fetch,当你得到它时,将它添加到缓存中,然后查看是否需要它的单元格(通过询问tableView),以及它是否可见可见,然后设置它。