我在iCloud上有图像,我为他们分类了UIDocument。现在我想在加载ViewController后在UITableView上显示图像。所以我在viewDidLoad
方法
- (void)viewDidLoad
{
...
iCloudImage *iClImage = [[iCloudImage alloc] initWithFileURL:ubiquitousPackage];
[iClImage openWithCompletionHandler:^(BOOL success) {
if (success) {
NSLog(@"iCloud document opened");
dataFromFileManager = [iClImage.imageDictionary objectForKey:img.fileName];
imageToDraw = [[[UIImage alloc] initWithData:dataFromFileManager] autorelease];
} else {
NSLog(@"failed opening document from iCloud");
imageToDraw = [UIImage imageNamed:@"defaultImage.jpg"];
}
[arrayOfImages addObject:imageToDraw];
}];
...
}
在这里,我将所有图像逐个收集到NSMutableArray *arrayOfImages
中,然后在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法中使用该数组。
但它们没有显示在表中,因为它们正在另一个线程中下载。
如何解决这个问题并在下载图像或设置默认图像后才开始显示UITableView?
答案 0 :(得分:2)
我最近遇到了同样的问题。我没等到加载视图,直到下载图像,而是在桌面上显示进度指示器。然后当图像加载时,我向视图发送了一个NSNotification,通知它删除进度指示器并加载数据。
这样,您可以保持UI响应,并向用户显示实际正在加载的内容。如果您需要我提供更多技术细节,请告诉我。