Вопрос

Я загружаю кучу файлов с iPhone в веб-сервис.Я хочу иметь UIAlertView на экране с UIActivityIndicatorView внутри.У меня это работает нормально.Однако я хочу обновлять заголовок UIAlertView по мере загрузки каждого файла.(«Загрузка файла 1...», «Загрузка файла 2...» и т. д.)

Я знаю, что вы не можете просто установить заголовок в цикле с синхронными веб-запросами, поскольку цикл выполнения пользовательского интерфейса никогда не будет вызван.Я пытался использовать NSTimer для запуска веб-запросов, но, поскольку продолжительность каждого запроса непредсказуема, это не сработало.(Сообщение может обновиться до фактического завершения запроса.)

Я действительно хочу загружать каждый файл синхронно, по одному, поскольку пропускная способность iPhone довольно ограничена.Я просто не могу придумать механизм, который бы сказал: «Как только эта синхронная операция завершится, дайте UI обновиться на некоторое время, а затем выполните еще одну синхронную операцию».

Это было полезно?

Решение

Хорошо, вот подход, который я использовал для решения этой проблемы:

  1. Создайте UIAlertView.
  2. Запустите асинхронный веб-запрос для публикации элемента, установите делегата на себя.
  3. В соединенииDidFinishLoading:метод, проверьте, есть ли еще элементы для публикации.Если есть, обновите заголовок и запустите еще один асинхронный запрос.Если нет, отклоните предупреждение.

Это означает, что вам нужно поддерживать несколько переменных класса, чтобы отслеживать, какой запрос загружается, но он работает отлично и не требует каких-либо сложных потоков или чего-либо еще.

Другие советы

ты пробовал это?

alertView.title = @"new title";
[alertView setNeedsDisplay];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top