#uiview #ios5
#uiview #ios5
Вопрос:
Так что это поставило меня в тупик….
Я показываю навигационный контроллер, который после нажатия кнопки отправляет NSNotification своему родительскому устройству, которое выполняет:
-(void)dismissModalWithUpload:(NSNotification *)notification
{
[self dismissModalViewControllerAnimated:YES];
[self performSelectorInBackground:@selector(executeUpload:) withObject:notification];
}
Модальный диалог закрывается, там все в порядке. При последующем вызове (executeUpload) Я пытаюсь отобразить представление, содержащее индикатор выполнения, для выполнения какой-либо другой работы:
[self performSelectorOnMainThread:@selector(showProgressBar:) withObject:nil waitUntilDone:YES];
… проблема в том, что прогресс не отображается до тех пор, пока не будет выполнена задача в executeUpload . Я пытался разобраться в различных вещах, чтобы заставить это работать, но безуспешно. Есть какие-нибудь идеи?
Я также попытался выполнить фоновую загрузку с помощью:
dispatch_queue_t myCustomQueue = dispatch_queue_create("com.freethinker.uploadQueue", NULL);
dispatch_async(myCustomQueue, ^{
[self executeUpload:notification];
});
Ответ №1:
Хорошо, итак, я наконец-то добрался до сути. Хитрость заключается в том, чтобы показать базовое представление прогресса, [progressBaseView setHidden:NO]
прежде чем отклонять контроллер модального представления.
В остальном мышление правильное — вся тяжелая работа выполняется в фоновом режиме при обновлении пользовательского интерфейса в основном потоке.