iOS UITableView: В чем разница между методами tableView: willDisplayCell: forRowAtIndexPath: и tableView (_: prefetchRowsAt :)? - PullRequest
0 голосов
/ 27 февраля 2020

Обе эти функции можно использовать для выборки разбитых на страницы данных, когда пользователь прокручивает список. Но есть ли существенные преимущества одного над другим? Что лучше для реализации нумерации страниц?

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

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

prefetchRowsAt, с другой стороны, вызывается задолго до времени и позволяет вам ' передышка », чтобы запустить потенциально дорогие операции, от которых зависят ваши клетки.

Документы для prefetchRowsAt состояния :

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

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

Операции предварительной выборки также могут быть отменены с помощью UITableView, когда он вызывает функцию tableView(_, cancelPrefetchingForRowsAt:) в вашем источнике данных.

Так что, да, есть большая разница. Один вариант требует гораздо больше работы, чем другой.

0 голосов
/ 27 февраля 2020

из документации Apple, я думаю, что это то, что вы ищете.

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

Vs

willDisplayCell: отправьте сообщение непосредственно перед использованием ячейки для рисования строки. Этот метод дает делегат получает возможность переопределить основанные на состоянии свойства, установленные ранее табличным представлением, такие как выделение и цвет фона

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