Для более сложных экранов мне нравится использовать сдерживание контроллера представления, чтобы модулировать контент. Например, я мог бы использовать один контроллер представления для управления некоторыми представлениями в верхней части экрана, а затем добавить UICollectionViewController
в качестве контроллера дочернего представления, расположив его представление в нижней части экрана.
![image](https://i.stack.imgur.com/6gK5r.png)
В этом случае я добавляю представление каждого дочернего контроллера представления к UIScrollView
, а затем обновляю высоту UICollectionView
, чтобы соответствовать его contentSize
, позволяя пользователю прокручивать до внизу экрана, как если бы это был один вид.
Однако я считаю, что здесь есть большой недостаток. Представление коллекции выкладывает все свое содержимое вперед, а не лениво, когда пользователь прокручивает. Это может иметь довольно большое влияние на производительность, если есть много ячеек и / или ячейки являются сложными.
Чтобы проверить эту проблему, я настраиваю иерархию контроллера представления, как описано выше, и каждый раз, когда ячейка удаляется из очереди из представления коллекции его indexPath
регистрируется в консоли. При запуске немедленно регистрируются все 600 путей индекса. При прокрутке не регистрируются пути индекса.
Есть ли способ использовать UITableViewController
или UICollectionViewController
в качестве контроллера дочернего представления, сохраняя при этом преимущества удаления ячеек из очереди по требованию?