我有一个loadImages方法
- (void)loadImages {
dispatch_async(dispatch_get_global_queue(0, 0), ^{
//this method loads images from a url, processes them
//and then adds them to a property of its view controller
//@property (nonatomic, strong) NSMutableArray *storedImages;
});
}
单击按钮时,视图进入屏幕,并显示当前存在于 _storedImages 中的所有图像
- (void)displayImages {
for (NSString *link in _storedImages) {
//displayImages
}
}
此设置的问题在于,如果用户在所有图像加载之前单击按钮,则并非所有图像都显示在屏幕上。
因此,如果单击按钮,我想显示一个 SVProgressHUD ,并且loadImages dispatch_async 方法仍在运行。
那么,我如何跟踪这个 dispatch_async 的完成时间呢?因为如果我知道这一点,那么我可以在完成之前显示一个 SVProgressHUD。
附带说明一下,如果您知道如何动态加载/显示图像,该信息也会有所帮助,即您单击按钮,然后当您看到当前图像时,会下载并显示更多图像
来自第一次 iOS 开发者的感谢!
好的,我找到了一个解决方案,但效率非常低,我相信有更好的方法来做到这一点
1. Keep a boolean property doneLoadingImages which is set to NO 2. After the dispatch method finishes, set it to YES 3. In the display images method, have a while (self.doneLoadingImages == NO) //display progress HUD until all the images a loaded