2014年7月10日木曜日

tableviewやcollectionviewでcellに画像を非同期で表示する場合

これが昨今利用シーンの多いこと。

一覧性を重視しているUITableViewやUICollectionViewでは当然のことかと改めて気づかされました。

注意点は至極簡単、

collectionView:cellForItemAtIndexPath:等のデリゲートメソッドで
imageview.image=nil
をして非同期で持ってくる画像を毎回初期化してやることです。

二つのViewはcellを再利用するという便利な機能がついていますが、
それゆえに非同期で画像を表示しようとすると、
表示したいindexがずれてしまうことがあるのです。
再利用された際に次の画像が表示されるまで前の画像が残ってしまうんですね。

これと collectionview:didEndDisplayingCell:forItemAtIndexPath: とかで
cellの画像を初期化するのを併せて行うといいのではないでしょうか?


collectionViewの造りに日々感動しております。




最近プログラミングのロジックの勉強を改めてしたいなぁと漠然とおもっとります。。。

0 件のコメント:

コメントを投稿