0

因此,我了解将单元格重用于表格视图等的概念,但我在 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% 的单元格正确加载,但其余的单元格仅在它们消失在屏幕上然后重新出现后才加载。以下是一些截图:

未加载单元格 在他们重新出现在屏幕上之后

4

2 回答 2

1

我之前遇到过这个问题,但后来我覆盖了 prepareForReuse 方法并设置了一个占位符 imagem 并得到了修复

于 2012-08-01T21:29:47.787 回答
0

虽然我不能肯定地说,但我建议您在此处设置图像的方式非常不标准。随着桌子的移动,细胞不断地被回收。做你想做的事(但更复杂)的更好方法是保留与标签关联的图像缓存(可能是单元格的 indexPath。

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

于 2012-07-23T22:02:36.233 回答