UICollectionViewFlowLayout
私はいくつかの再利用性を備えたcollectionViewを持っています:
- (CategoryCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CategoryCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CategoryCell" forIndexPath:indexPath];
[cell.actIn startAnimating];
cell.cellElementRepresentation = [self.localCategoriesObjects objectAtIndex:indexPath.row];
[cell tryToShow]; //this is a important method to my problem
return cell;
}
私はあなたのtryToShow
方法についてコメントしました。これは問題だと思うからです。リスト内の表示されていない要素までスクロールすると、最初に「古い」要素が表示され、次に新しい要素が表示されました。何故ですか?私のtryToShow
方法は基本的にダウンロードマネージャーです。私はコメントでそれを説明しようとします。コードは次のとおりです。
-(void)tryToShow {
NSString* imageFile = self.linkToImageFileSavedOnDisk //This is my local file saved in documentsDirectory.
if([[NSFileManager defaultManager] fileExistsAtPath:imageFile]) {
[self.overlayButton setBackgroundImage:[UIImage imageWithContentsOfFile:imageFile] forState:UIControlStateNormal];
[self disableActIn]; //Here i stop and remove activity indicator.
} else {
// Here i fire NSURLConnection and try to download. When NSURLConnection finished i put image to overlayButton.
}
}
デリゲートメソッドは次のとおりです。
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
//Here do some stuff to convert Data into UIImage... not important.
[self.overlayButton setBackgroundImage:object forState:UIControlStateNormal];
}
overlayButton は 上のボタンUICollectionViewCell
です。私はそれのためのカスタムクラスを持っています。
私はそれを理解することはできません。indexPath.row
スクロール後に(たとえば1)から画像を表示するにはどうすればよいですか?新しい画像が正常にダウンロードされた直後に新しい画像に置き換えられますが、これでは遅いです。