在加载视图之前从 iCloud 加载文档
Posted
技术标签:
【中文标题】在加载视图之前从 iCloud 加载文档【英文标题】:Load document from iCloud before view will be loaded 【发布时间】:2012-06-08 11:03:31 【问题描述】:我在 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】:我最近遇到了同样的问题。我没有等到图像下载完毕才加载视图,而是在桌子上显示了一个进度指示器。然后,当图像加载完毕后,我向视图发送了一个 NSNotification,通知它删除进度指示器并加载数据。
这样,您可以让您的 UI 保持响应,并向用户显示实际正在加载的内容。如果您需要我提供更多技术细节,请告诉我。
【讨论】:
以上是关于在加载视图之前从 iCloud 加载文档的主要内容,如果未能解决你的问题,请参考以下文章
切换视图控制器后如何保持加载来自 iCloud(CloudKit)的数据
在重新加载文档之前,如何在 OS X 上的 iCloud 中检测对 Core Data 文档的更改?