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 など) に関連付けられた画像のキャッシュを保持することです。

セルを求められたらそれを提供し、画像があればすぐに設定します。持っていない場合は、セルのフェッチを発行し、それを取得したらキャッシュに追加し、必要なセルが表示されているかどうかを (tableView に問い合わせて) 確認します。次に設定します。

于 2012-07-23T22:02:36.233 に答える