【发布时间】:2015-06-03 10:37:01
【问题描述】:
我对 IOS 编程比较陌生。
我有一个NSObject“地点”,如下所示。
@interface Places : NSObject
@property(strong) NSString *placeName;
@property(strong) UIImage *placeImage;
@end
我在 UITableView 中列出 Places 对象的数组。在 tableView:cellForRowAtIndexPath: 上,图像正在从 Web url 异步获取。在tableView:didSelectRowAtIndexPath: 上,我将各自的“Places”对象传递给另一个 ViewController (detailViewController)。在那个 detailViewController 中,我使用下面的代码在 UIImageView 中显示图像。
self.imageView.Image = self.myPlaces.placeImage
我的问题是当我传递该对象时,不需要将图像提取到 placeImage。无论如何,在 mainViewController 中连续完成图像获取到 placeImage 时,是否更新 self.imageView。
我的代码如下。在mainViewController的tableView:cellForRowAtIndexPath:中调用。
NSURL *url = [NSURL URLWithString:@"http://imageurl_goes_here"];
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSData *imageData = [NSData dataWithContentsOfURL:url];
dispatch_async(dispatch_get_main_queue(), ^{
if(imageData != nil)
{
place.placeImage = [UIImage imageWithData: imageData];
cell.cellImageView.image = place.placeImage;
}
});
});
【问题讨论】:
-
请提供加载图片的代码。可能有完成处理程序或回调。
-
@johnpatrickmorgan 请查看编辑后的代码。
-
你是在图片完全加载之前点击表格行吗?
-
@Rashmi Ranjan mallick 有时,是的。我知道问题所在。但我在问如何在不阻塞用户的情况下纠正它直到异步调用完成
-
是的。我只是想检查一下问题。仍在寻找解决方案!
标签: ios objective-c uitableview uiimageview uiimage