私のTableViewの各セルにはUIImageが含まれています。各セルのUIImage内のすべてのイメージを変更してから、テーブルをリロードします。
テーブルをスクロールするまで、画像は変更されませんでした。
私はTableViewがスクロール中にセルをロードしていることを知っています。
問題を解決する方法はありますか?TableViewリロードの問題
おかげ
私のTableViewの各セルにはUIImageが含まれています。各セルのUIImage内のすべてのイメージを変更してから、テーブルをリロードします。
テーブルをスクロールするまで、画像は変更されませんでした。
私はTableViewがスクロール中にセルをロードしていることを知っています。
問題を解決する方法はありますか?TableViewリロードの問題
おかげ
あなたはMainThreadからreloadData
またはbeingUpdates
/endUpdates
を呼び出していることを確認してください。これは次の方法で確認できます:
if (![NSThread mainThread]) {
return;
}
ここは例です。 ViewControllerはImageDownloaderのデリゲートであり、イメージのダウンロードが完了したら-acceptImageという名前でダウンロードし、メインスレッドでセレクタを実行してテーブルの更新を行います。あなたが[tableView reloadData];
をUITableView Reference
- (void)setDownloadedImage:(NSMutableDictionary *)d {
UIImageView *imgV = (UIImageView *)[d objectForKey:@"imageView"];
NSIndexPath *indexPath = [d objectForKey:@"userInfo"];
[thumbs addObject:[ImageWorks imageWithImage:[UIImage imageWithData:[d objectForKey:@"image"]] scaledToSize:imgV.frame.size]];
[table beginUpdates];
[table insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationMiddle];
[table endUpdates];
loadingView.hidden = YES;
}
- (void)acceptImage:(NSData *)image ForUserInfo:(id)userInfo ForUrl:(NSString *)url {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSMutableDictionary *d = [[NSMutableDictionary alloc] init];
iPhoneMyTableCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"iPhoneMyTableCell" owner:self options:nil] lastObject];
[d setObject:userInfo forKey:@"userInfo"];
[d setObject:(image ? image : UIImagePNGRepresentation([UIImage imageNamed:@"ImageMissing.png"])) forKey:@"image"];
[d setObject:cell.myImageView forKey:@"imageView"];
[self performSelectorOnMainThread:@selector(setDownloadedImage:) withObject:d waitUntilDone:YES];
[d release];
[pool drain];
}
電話した。また、参照してください?
多分、あなたのコードをここに掲載することができます。私は、怠惰なローディングイメージ、またはデフォルトのものを使用するかどうかを知る必要があります。 – sicKo