0

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

4

1 回答 1

2

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

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

于 2012-06-08T11:07:40.203 回答