Что именно вызывает reloadData? - PullRequest
12 голосов
/ 04 июня 2010

При вызове reloadData для UITableView какие методы фактически вызываются?

[tableView reloadData];

Ответы [ 3 ]

18 голосов
/ 05 июня 2010

Перезагружается все табличное представление, он вызывает cellForRowAtIndexPath, чтобы получить ячейки для всех ваших строк и разделов ... при этом он также вызывает метод numberOfSections источника данных tableView и метод numberOfRows источника данных таблицы и т. Д.

1 голос
/ 05 февраля 2018

Для принятия ответа это очень хорошо. Но я хочу упомянуть, что все видимые ячейки будут воссозданы. Обычно это не имеет большого значения. Но если ваше хранимое свойство tableViewCell содержит некоторые данные, они могут быть потеряны.

Например, нажмите кнопку на tableViewCell, чтобы запросить некоторые данные из Интернета и сохранить полученные данные в сохраненном свойстве. Если вы reloadData, то восстановленные данные будут потеряны. Конечно, это не совсем правильно делать запрос из tableViewCell. Но просто хочу объяснить эту ситуацию.

1 голос
/ 05 июня 2010

Кроме того, для дальнейшего использования эта информация легко доступна в документации здесь . Копирование / вставка из документации Apple:

Вызовите этот метод, чтобы перезагрузить все данные, которые используются для построения таблицы, включая ячейки, верхние и нижние колонтитулы разделов, массивы индексов и т. Д. Для эффективности табличное представление повторно отображает только те строки, которые видны. Он корректирует смещения, если таблица сжимается в результате перезагрузки. Делегат табличного представления или источник данных вызывает этот метод, когда он хочет, чтобы табличное представление полностью перезагрузило свои данные. Его нельзя вызывать в методах, которые вставляют или удаляют строки, особенно в анимационном блоке, реализованном с помощью вызовов beginUpdates и endUpdates

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