2011-09-08 19 views
0

私のTableViewの各セルにはUIImageが含まれています。各セルのUIImage内のすべてのイメージを変更してから、テーブルをリロードします。
テーブルをスクロールするまで、画像は変更されませんでした。
私はTableViewがスクロール中にセルをロードしていることを知っています。
問題を解決する方法はありますか?TableViewリロードの問題

おかげ

+0

多分、あなたのコードをここに掲載することができます。私は、怠惰なローディングイメージ、またはデフォルトのものを使用するかどうかを知る必要があります。 – sicKo

答えて

1

あなたは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]; 
} 
0

電話した。また、参照してください?

関連する問題