Могу ли я избежать того, чтобы контроллер представления таблицы или представления коллекции выкладывал все свои ячейки при размещении внутри другого контроллера представления? - PullRequest
0 голосов
/ 20 июня 2020

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

image

В этом случае я добавляю представление каждого дочернего контроллера представления к UIScrollView, а затем обновляю высоту UICollectionView, чтобы соответствовать его contentSize, позволяя пользователю прокручивать до внизу экрана, как если бы это был один вид.

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

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

Есть ли способ использовать UITableViewController или UICollectionViewController в качестве контроллера дочернего представления, сохраняя при этом преимущества удаления ячеек из очереди по требованию?

...