私のテーブル ビューは、それぞれの SDWebImage (UIImageView の非同期画像ダウンロード/キャッシュ カテゴリ) を介して画像を読み込みますtableView:cellForIndexPath:
。
// 'spot' is a dictionary of this cell's attributes
NSURL* imageURL = [NSURL URLWithString:(NSString*)[spot objectForKey:@"Image"]];
UIImage* placeholderImage = [UIImage imageNamed:@"placeholder.png"];
^ 画像をロードしますが、常にリクエストを作成したり、キャッシュからプルしたりする必要があります。そのため、レンダリングされたセルがメモリに保存されているかどうかを確認したかったので、必要なときにのみ画像を要求できました。画像ビューの画像プロパティに簡単なチェックを追加することで、これを実現しました。
if (!cell.pictureView.image)
{
NSURL* imageURL = [NSURL URLWithString:(NSString*)[spot objectForKey:@"Image"]];
UIImage* placeholderImage = [UIImage imageNamed:@"placeholder.png"];
[cell.pictureView setImageWithURL:imageURL placeholderImage:placeholderImage options:SDWebImageCacheMemoryOnly];
}
これは機能し、アプリケーションを終了して再入力した後に画像をリロードする必要がなくなります。しかし、(デバッグ用に) 意図的に不適切な画像 URL を持つセルの 1 つで、以前は残っていたimageNamed:@"placeholder"
画像が 2 番目のセルと同じ画像になりました。
どのような種類のセル再利用/キャッシュ マジックがセルに前のセルの写真を撮らせるのか興味があります。
セルのプロパティを保持し、必要な場合にのみ設定する最良の方法は何ですか?