Загрузить документ из iCloud перед загрузкой представления
У меня есть изображения на iCloud, и я подкласс UIDocument для них. Теперь я хочу отобразить изображения на UITableView после загрузки ViewController. Поэтому я добавил этот код внутри 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 в представление, которое информировало его об удалении индикатора прогресса и загрузке данных.
Таким образом, вы сохраняете свой интерфейс отзывчивым и показываете пользователю, что что-то действительно загружается. Дайте мне знать, если вам понадобится более подробная техническая информация.