在加载视图之前从iCloud加载文档

时间:2012-06-08 11:03:31

标签: ios multithreading icloud uidocument

我在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?

1 个答案:

答案 0 :(得分:2)

我最近遇到了同样的问题。我没等到加载视图,直到下载图像,而是在桌面上显示进度指示器。然后当图像加载时,我向视图发送了一个NSNotification,通知它删除进度指示器并加载数据。

这样,您可以保持UI响应,并向用户显示实际正在加载的内容。如果您需要我提供更多技术细节,请告诉我。