学校のプロジェクト用に簡単な reddit アプリを作成しています。ライブラリを使用して、json( http://www.reddit.com/.jsonなど)を介してredditからデータをロードしてい
AFNetworking
ます。UIImageView
各 reddit スレッドを、投稿のサムネイル用のを含むプロトタイプ セルと共に表示しています。AFNetworking
メソッドを使用して、画像を遅延ロードする ために使用しようとしていますsetImageWithURLRequest
。
問題:アプリを起動すると、tableView を下にスクロールすると、すべてのサムネイルが遅延ロードされます。セルがビューから外れて上にスクロールするとすぐに、スクロールする前に正しいサムネイルが読み込まれていても、サムネイルがプレースホルダー画像に置き換えられます。
メソッドからの関連コードcellForRowAtIndexPath
。遅延読み込みがsetImageWithURLRequest
ブロック で呼び出されています
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"threadCell";
SubredditThreadCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSDictionary *tempDictionary = [self.subredditArrayFromAFNetworking objectAtIndex:indexPath.row];
NSDictionary *singleThreadDict = [tempDictionary objectForKey:@"data"];
if ( [[singleThreadDict objectForKey:@"thumbnail"] isEqualToString:@"nsfw"] ){
cell.postImageThumbnail.image = [UIImage imageNamed:@"NSFWIcon"];
}
else if ([[singleThreadDict objectForKey:@"thumbnail"] isEqualToString:@"self"]){
cell.postImageThumbnail.image = [UIImage imageNamed:@"selfIcon"];
}
else if ([[singleThreadDict objectForKey:@"thumbnail"] length] == 0){
cell.postImageThumbnail.image = [UIImage imageNamed:@"genericIcon"];
}
else{
NSURL *thumbURL = [NSURL URLWithString:[singleThreadDict objectForKey:@"thumbnail"] ];
[cell.postImageThumbnail setImageWithURLRequest:[NSURLRequest requestWithURL:thumbURL]
placeholderImage:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
{
if (request) {
[UIView transitionWithView:cell.postImageThumbnail
duration:1.0f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
[cell.postImageThumbnail setImage:image];
}
completion:NULL];
}
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
{
NSLog(@"failure loading thumbnail");
}
];
}
return cell;
}