Ios 下载完成后,如何将通过SDWebImage下载的图像加载到视图控制器中?
我有一个由10个URL组成的数组,链接到我网站的图片 我使用SDWebImages进行异步图像下载,并使用for循环在URL数组中运行。但是,在下载第一幅图像之前,代码只需通过For循环运行。因此,不会下载其余图像,也不会显示新的视图控制器 我如何允许代码通过for循环运行,一旦下载了一个图像,它就会弹出一个视图控制器,并在下载新图像时得到更新 这是我的密码:Ios 下载完成后,如何将通过SDWebImage下载的图像加载到视图控制器中?,ios,objective-c,sdwebimage,Ios,Objective C,Sdwebimage,我有一个由10个URL组成的数组,链接到我网站的图片 我使用SDWebImages进行异步图像下载,并使用for循环在URL数组中运行。但是,在下载第一幅图像之前,代码只需通过For循环运行。因此,不会下载其余图像,也不会显示新的视图控制器 我如何允许代码通过for循环运行,一旦下载了一个图像,它就会弹出一个视图控制器,并在下载新图像时得到更新 这是我的密码: NewViewController *vc = [[NewViewController alloc] initWithNibName:n
NewViewController *vc = [[NewViewController alloc] initWithNibName:nil bundle:nil];
NavigationController *navigationController = [[NavigationController alloc] initWithRootViewController:vc];
for (NSString *url in urls) {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectZero];
[imageView setImageWithURL:[NSURL URLWithString:url]
placeholderImage:[UIImage imageNamed:@"post-imagePlaceholder"]
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
item.image = image;
[self.images addObject:item];
vc.results = self.images;
;
}
}];
}
[self presentViewController:navigationController animated:YES completion:nil]
我突然想到几个问题:
addSubView
)NewViewController
中,则应该让该控制器执行setImageWithURL
调用(例如在其viewDidLoad
中),而不是当前视图控制器。当前视图控制器只需将url
数组传递给NewViewController
- 按照您编写的方式,我猜您希望在新的视图控制器出现之前填充
。但它不会,因为这个self.images
完成的
块是异步发生的
- 您通常不应该填充图像数组,因为图像需要大量内存。如果应用程序中的图像数量增加,您将遇到内存警告。我们通常不应该维护URL数组,而应该让
进行缓存以有效地检索图像SDWebImage
url
数组,而NewViewController
的viewDidLoad
可以遍历这些数组,或者(a)查找适当的现有图像视图“IBOutlet
引用并调用setImageWithURL
;或者(b)创建一个新的UIImageView
,设置各自的图像
和帧
/约束,并将该图像视图添加到新视图控制器的视图中。但不要创建任何图像
数组
如果不是所有图像视图一次都可见,则应进一步改进上述方法(仅加载可见图像视图的图像)。但希望上述内容能回答眼前的问题。谢谢。你在第3.1点上是对的。我以为会,但每次它都会弹出一个空的新ViewController。My NewViewController是一个UITableView,显示下载的图像行。我将尝试传递URL数组而不是图像。谢谢@Scott如果您使用的是
UITableView
,那么这就更容易了。只需在您的单元格中使用setImageWithURL
即可。无需使用图像
数组,无需手动创建UIImageView
中的viewDidLoad
对象等。操作非常简单。这些UIImageView
类别非常适合与表视图组合。每个单元格需要显示3个图像。此外,我需要检查以确保图像良好,即尺寸大于100 x 100。我需要下载图像并将其存储在其他地方,然后进行分析,然后将图像加载到手机中…@Scott,这很好。但我仍然认为(a)你可以在你的完成的块中做到这一点;(b) 这个setImageWithURL
逻辑仍然属于cellforrowatinexpath
(或者坦率地说,您正接近我将其放入UITableViewCell
子类中的复杂程度);(c)您永远不想从事维护UIImage
对象数组的工作(如果您想做一些优化,可能是NSCache
,但永远不想NSMutableArray
)。