Как показать прогресс загрузки в пользовательском UITableViewCell с ASIHTTPRequest? - PullRequest
1 голос
/ 08 ноября 2011

Я пытаюсь реализовать список языковых пакетов, которые можно загрузить, выбрав пользовательский UITableViewCell, который содержит UIProgressBar. Для каждого языкового пакета я хочу показать прогресс загрузки. Я сделал это, установив этого делегата setDownloadProgressDelegate:.

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

Hier - это картинка, чтобы увидеть, как она выглядит прямо сейчас.

Custom UITableViewCell with UIProgressBar

Thx

1 Ответ

2 голосов
/ 08 ноября 2011

Полагаю, вы можете использовать свой собственный класс (или даже контроллер представления) в качестве делегата прогресса. В вашем контроллере представления вы можете хранить массив ссылок на все индикаторы выполнения, используемые в данный момент. Вы должны создать один индикатор выполнения для каждой загрузки и удерживать его в массиве (таким образом, объект не будет уничтожен). Всякий раз, когда создается ячейка, теперь вы должны проверять свой массив на наличие соответствующего объекта индикатора выполнения, а не создавать новый. Всякий раз, когда загрузка завершена и индикатор выполнения больше не нужен, вы удаляете его из массива.

Остерегайтесь возможных проблем с многопоточностью и, если необходимо (например, если ваши уведомления могут поступать в другом потоке, отличном от основного потока), используйте performSelectorOnMainThread:, чтобы обновить массив индикаторов выполнения и индикаторы выполнения внутри.

...