#objective-c #ios #uitableview #asihttprequest
#objective-c #iOS #uitableview #asihttprequest
Вопрос:
Я пытаюсь реализовать список языковых пакетов, которые можно загрузить, выбрав пользовательскую UITableViewCell, содержащую UIProgressBar. Для каждого языкового пакета я хочу показать ход загрузки. Я делаю это, устанавливая этот делегат setDownloadProgressDelegate:
.
Все работает отлично, за исключением случаев, когда UIProgressBar перемещается из видимой области. Это имеет смысл, потому что индикатор выполнения делегатов удален. Что я могу сделать, чтобы остановить сбой приложения и как я могу отобразить индикатор выполнения, если он вернется в видимую область?
Вот картинка, чтобы посмотреть, как это выглядит прямо сейчас.
Спасибо
Комментарии:
1. Недавно я услышал трагическую новость о том, что разработчик ASIHTTPRequest прекратил работу над ним и рекомендует перейти на какой-то другой пакет HTTP-клиента. Просто К вашему сведению. Подробности в блоге на его сайте.
2. О, печально вот что. У вас есть какие-либо другие рекомендации?
Ответ №1:
Я полагаю, вы могли бы использовать свой собственный класс (или даже контроллер представления) в качестве делегата прогресса. В вашем контроллере просмотра вы могли бы хранить массив ссылок на все используемые в данный момент индикаторы выполнения. Вы бы создали один индикатор выполнения для каждой загрузки и удерживали его в массиве (таким образом, объект не был бы уничтожен). Всякий раз, когда создается ячейка, теперь вы должны проверять свой массив на наличие соответствующего объекта индикатора выполнения вместо создания нового. Всякий раз, когда загрузка завершена и индикатор выполнения больше не нужен, вы удаляете его из массива.
Остерегайтесь возможных проблем с многопоточностью и при необходимости (например, если ваши уведомления могут приходить в другом потоке, отличном от основного потока) используйте performSelectorOnMainThread:
для обновления массива индикаторов выполнения и индикаторов выполнения внутри.