Потоковая загрузка миниатюр для просмотра изображений в ячейке таблицы - PullRequest
0 голосов
/ 09 декабря 2010

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

Я думаю, что приложение Blocket делает то, что мне нужно, если я правильно помню.

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

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

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

Сделана самая приятная многопоточная загрузка миниатюр, которую я когда-либо видел на iPhone: D Самым сложным было отменить нить при переходе от его таблицы.NSThread загружает изображения и executeSelectorOnMainThread waitUntilDone: YES для при обновлении cell.imageView, передавая объекты (cell, tableView, indexPath и т. Д.) В массив, чтобы обойти ограничение передачи только одного объекта в withObject.Выглядит рояль с быстрым нарастанием каждого изображения при загрузке:)

0 голосов
/ 09 декабря 2010

Интересная проблема.

Полагаю, на каком-то уровне вам потребуется заменить существующие ячейки в табличном представлении с помощью метода reloadRowsAtIndexPaths:withRowAnimation: UITableView , поэтому я подозреваю, что вам нужно будет искать содержимое ячеек - > indexPaths, чтобы вы знали, какие ячейки обновлять при появлении соответствующего актива.

Тем не менее, вам нужно избегать нарушения существующей системы повторного использования ячеек. (т.е.: нет никакого значения в предварительном создании всех ячеек заранее.) Таким образом, большая часть этой работы должна быть сделана в пределах - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath UITableViewDelegate метод, я подозреваю.

Тем не менее, надеюсь, вы получите лучший ответ, чем эти несколько смутные разговоры. : -)

...