2013-08-20 2 views
0

Я реализую систему загрузки, и у меня есть этот вид таблицы с элементами из Core Data.Следите за динамикой UITableViewCell

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

У меня есть библиотека для загрузки, которая может общаться и сообщать о прогрессе через методы делегирования, моя проблема в том, что я не знаю, как соотнести/правильно перерисовать/обновить представление прогресса в многократно используемых ячейках.

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

Должен ли я звонить [self.tableView reloadData] каждый раз, когда делегат получает событие?

ответ

1

Правильно, это сложная проблема. Как вы заметили, объекты ячейки повторно используются, когда прокручивается таблица, и нет гарантии, что один и тот же объект ячейки будет продолжать ссылаться на один и тот же путь индекса вашей таблицы.

Я бы предложил взглянуть на tableView:willDisplayCell:forRowAtIndexPath: Он вызывается делегатом представления таблицы непосредственно перед тем, как ячейка будет отображаться. Это было бы хорошим местом для установки этой ячейки в качестве правильного делегата в вашей загружающей библиотеке.

Что касается вашего второго вопроса, нет, не звоните [self.tableView reloadData] на каждое событие. Это было бы решающим решением. :)

+0

Совет хорош; Я хотя о 'tableView: willDisplayCell: forRowAtIndexPath:' но устанавливая делегат библиотеки загрузки здесь в ячейке, это означает, что он получит все события загрузки, так как библиотека не может иметь более одного делегата. Поэтому идея заключалась в том, чтобы настроить контроллер таблицы как делегата библиотеки загрузки, реализовать методы и выполнить задачи пользовательского интерфейса на основе метода делегата (например, прогресс). –

+0

Моя проблема заключается в том, чтобы догнать правильную ячейку из метода делегирования (который, скорее всего, ничего не знает о ячейках, только NSURL), просмотрев объект, возможно, связанный с ним свойством, которое я буду использовать для поиска Сбор основных данных. После того, как у меня есть запись Core Data, найдите ячейку (?), Проверьте, видимо ли это (не будет работать) и т. Д. –

+0

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

Смежные вопросы