Быстрая перезагрузка данных UITableView (iOS) - PullRequest
1 голос
/ 08 августа 2011

Я использую UITableView для отображения пользовательского контента (путем подкласса UITableViewCell), и у меня есть два типа контента.

Тип 1, который отображается обычно, состоит из 6-7 строк и 1 секции, и он загружается довольно быстро, без проблем. Этот набор данных отображается по умолчанию.

Теперь в представлении есть кнопка, которая при щелчке включит флаг и называется [tableview reloadData], а затем методы для предоставления данных переключатся и начнут возвращать этот второй набор представлений данных .... 20 000+ этих строк сейчас ... и может быть 1 000 000 000 (но это произойдет не скоро ...).

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

Что вызывает длительное время перезагрузки данных? ...

Спасибо.

1 Ответ

1 голос
/ 08 августа 2011

Я собираюсь предположить, что вы правильно загружаете данные асинхронно и не пытаетесь перезагрузить свои 20 000+ объектов в память, возможно, вы захотите перепроверить.В противном случае, если вы используете tableView:heightForRowAtIndexPath: для установки высоты ваших строк, это может стать вашей проблемой.Этот метод делегата необходимо вызывать для каждой строки, чтобы он мог установить размер содержимого представления прокрутки.Вместо этого используйте свойство UITableView s rowHeight.

Существуют последствия для производительности при использовании tableView: heightForRowAtIndexPath: вместо свойства rowHeight.Каждый раз, когда отображается табличное представление, оно вызывает tableView: heightForRowAtIndexPath: для делегата для каждой из его строк, что может привести к значительной проблеме производительности с табличными представлениями, имеющими большое количество строк (приблизительно 1000 или более).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...