我的TableView的每个单元格都包含UIImage,我做了一个动作来更改每个单元格中UIImage中的所有图像,然后重新加载表格。
直到我滚动表格时,图像才改变。
我知道TableView在滚动期间正在加载单元格。
但是有没有办法解决我的问题?TableView刷新问题
感谢
我的TableView的每个单元格都包含UIImage,我做了一个动作来更改每个单元格中UIImage中的所有图像,然后重新加载表格。
直到我滚动表格时,图像才改变。
我知道TableView在滚动期间正在加载单元格。
但是有没有办法解决我的问题?TableView刷新问题
感谢
确保您从MainThread调用reloadData
或beingUpdates
/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];
}
你叫[tableView reloadData];
?
也许你可以发布你的代码在这里..我需要知道你是否使用延迟加载图像,或默认的.. – sicKo