Загрузка асинхронного образа для UITableViewCell не будет запускать connectionDidFinishLoading: до тех пор, пока прокрутка не прекратится - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть типичный UITableView, который отображает миниатюру изображения и некоторый текст. Во время tableView: cellForRowAtIndexPath: я запускаю загрузку асинхронного изображения для каждого элемента в списке. Изображения загружаются, но не так, как я хочу. Например, если я прокручиваю список пролистываемым списком, мои запросы на загрузку выполняются немедленно, однако сообщение connectionDidFinishLoading: не будет запущено до тех пор, пока прокрутка из прокрутки с пролистыванием не остановится. По сути, это приводит к тому, что пользователь видит пару пустых изображений в течение пары секунд.

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

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 15 февраля 2011

Вам, вероятно, нужно сделать это:

[_connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

Предполагая, что _connection является вашим NSURLConnection.

1 голос
/ 15 марта 2011

Я сам решил это, поскольку никто на планете не мог мне помочь. Если вы действительно хотите знать, как этого добиться, я описал, как изменить пример проекта Apple LazyTableImages для достижения желаемого эффекта, здесь:

Вопрос об образце Apple LazyTableImages - не работает так же, как в магазине приложений

0 голосов
/ 15 февраля 2011

посмотрите ответ здесь. отложенная загрузка изображений в iPhone SDK UITableView Я использую в некоторых из моих приложений, и это прекрасно работает

...