Обновление заголовка UIAlertView
-
03-07-2019 - |
Вопрос
Я загружаю кучу файлов с iPhone в веб-сервис.Я хочу иметь UIAlertView на экране с UIActivityIndicatorView внутри.У меня это работает нормально.Однако я хочу обновлять заголовок UIAlertView по мере загрузки каждого файла.(«Загрузка файла 1...», «Загрузка файла 2...» и т. д.)
Я знаю, что вы не можете просто установить заголовок в цикле с синхронными веб-запросами, поскольку цикл выполнения пользовательского интерфейса никогда не будет вызван.Я пытался использовать NSTimer для запуска веб-запросов, но, поскольку продолжительность каждого запроса непредсказуема, это не сработало.(Сообщение может обновиться до фактического завершения запроса.)
Я действительно хочу загружать каждый файл синхронно, по одному, поскольку пропускная способность iPhone довольно ограничена.Я просто не могу придумать механизм, который бы сказал: «Как только эта синхронная операция завершится, дайте UI обновиться на некоторое время, а затем выполните еще одну синхронную операцию».
Решение
Хорошо, вот подход, который я использовал для решения этой проблемы:
- Создайте UIAlertView.
- Запустите асинхронный веб-запрос для публикации элемента, установите делегата на себя.
- В соединенииDidFinishLoading:метод, проверьте, есть ли еще элементы для публикации.Если есть, обновите заголовок и запустите еще один асинхронный запрос.Если нет, отклоните предупреждение.
Это означает, что вам нужно поддерживать несколько переменных класса, чтобы отслеживать, какой запрос загружается, но он работает отлично и не требует каких-либо сложных потоков или чего-либо еще.
Другие советы
ты пробовал это?
alertView.title = @"new title";
[alertView setNeedsDisplay];