gpt4 book ai didi

ios - 如何将图像设置为在另一个viewController中异步获取的UIImageView?

转载 作者:行者123 更新时间:2023-11-29 01:58:09 25 4
gpt4 key购买 nike

我对 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;
}

});
});

最佳答案

好吧,有一些技术可以存档:

  • 您可以在每次收到图像时通知您的第二个 View Controller 。例如。在你的内部 dispatch_async。但这需要主 Controller 对第二个 Controller 有很多了解。
  • 您可以使用 Key-Value Observing观察每个地方图像更新的技术。在这种情况下,您可能还想使用一些方便的库来为您提供理智(例如在对象被释放时取消订阅,否则您将崩溃),例如 that one或任何其他。

This post Matt Thompson 的研究可能有助于实例之间的其他类型的通信。

关于ios - 如何将图像设置为在另一个viewController中异步获取的UIImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30617693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com