2011-09-08 129 views
0

我的TableView的每個單元格都包含UIImage,我做了一個動作來更改每個單元格中UIImage中的所有圖像,然後重新加載表格。
直到我滾動表格時,圖像才改變。
我知道TableView在滾動期間正在加載單元格。
但是有沒有辦法解決我的問題?TableView刷新問題

感謝

+0

也許你可以發佈你的代碼在這裏..我需要知道你是否使用延遲加載圖像,或默認的.. – sicKo

回答

1

確保您從MainThread調用reloadDatabeingUpdates/endUpdates。您可以通過以下方式進行檢查:

if (![NSThread mainThread]) { 
    return; 
} 

下面是一個示例。 ViewController是ImageDownloader的一個委託,當圖像完成下載時,它會調用-acceptImage,然後在主線程上執行一個選擇器來執行表更新。此外,請參閱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

你叫[tableView reloadData];