В моем приложении у меня есть домашняя страница с карточкой/сеткой с несколькими разделами. Таким образом, UICollectionView
- это очевидный выбор. Но эти карты сильно различаются по дизайну, загрузке данных и их функциональности. Таким образом, все те, кто находится в одном контроллере, были бы громоздкими, сложными и сложными в обслуживании. Поэтому мы подумали, что нам нужно разделить их на свои UIViewControllers
. Каждая из них обрабатывает тип карты и вычисляет ее содержимое, которое будет отображаться внутри карты. Наш главный контроллер главной страницы несет ответственность только за то, что эти viewcontroller
просмотрели внутри ячеек UICollectionView
.Встраивание UIViewcontrollers внутри UICollectionviewCells
К summerize,
- HomeViewController который имеет CollectionView
- Каждый вид внутри collectionViewCell и его данных поддерживаются своего класса контроллера.
- Все экземпляры контроллера находятся внутри HomeViewController и added as its children .- Apple Guide
- The appearance call с до всех детей viewControllers сделаны сами так, тем contentSize (который используется в качестве элемента для размера макета CollectionView) расчета из представлений контроллера требуется, чтобы представление было загружено и данные должны быть установлены.
Вопрос в том, является ли этот выбор дизайна правильным? Или какой подход вы бы выбрали для реализации такого экрана? Поскольку мы создаем много viewControllers (по одному для каждой ячейки), это влияет на память или производительность? И если я хочу кэшировать только некоторые viewControllers или загружать их по мере прокрутки пользователя или когда его время добавить его в ячейку collectionView, как мне это сделать, поскольку вычисление размера этой ячейки зависит от данных и представлений при укладке из макета CollectionView.
Я полностью понимаю, когда вы говорите, что это кажется излишним. Может быть, я был не слишком ясен, когда сказал дизайн t, загрузка данных сильно варьируется от карты к карте. На карточке может быть даже tableView внутри, или другой collectionView или какой-либо сложный набор представлений. Подобно делегатам tableView или другим представлениям в этих представлениях. Поэтому мне понадобится «Объект, который обрабатывает представление и его данные», который звучал как определение UIViewController для меня. Поэтому я решил использовать viewcontroller. – akshaynhegde
И о том, как использовать диспетчер view для секции, в другом разделе могут появиться похожие типы карт, поэтому тип карт в каждом разделе не определен до тех пор, пока я не получу данные с сервера. Эти сведения (тип карты, данные и способы ее просмотра) определяются на стороне сервера. Поэтому я создам контроллер, который должен знать, как обращаться с каждым типом карты. – akshaynhegde
Теперь я столкнулся с той же проблемой, что и я сделал, сделав снимок экрана представления View Controller, сохраните его в кеше и используйте этот скриншот в UICollectioVIewCell, все в порядке, кроме изменчивого прокрутки в первый раз, поскольку он создает представление и принимает снимок экрана, когда ячейка загружается в первый раз. Нужны некоторые предложения или улучшения – Koushik