UIView не появляется после вызова [self dismissModalViewControllerAnimated: ДА];

#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] прежде чем отклонять контроллер модального представления.

В остальном мышление правильное — вся тяжелая работа выполняется в фоновом режиме при обновлении пользовательского интерфейса в основном потоке.