UICollectionView + DiffableDataSource из разных моделей данных [решено]

uicollectionview

#1

Курс 33: IChat – 14. Setting Up Diffable Datasource
https://swiftbook.ru/content/33-video-14 – 5-ая минута

Просмотрел первые 25 уроков и решил попробовать создать что-то с аналогичным дизайном: сверху горизонтально пользователи, ниже – вертикально посты (для примера можно взять Instagram, где сверху истории, а снизу посты). То есть 2 совершенно разные модели данных.

И тут возникает проблема: как поместить эти 2 разные модели в var dataSource: UICollectionViewDiffableDataSource<Section, модельДанных>? ? Я думал про объединение моделей, но они полностью различаются. И в данном случае, по-моему, это будет очень плохой практикой.

Подскажите, пожалуйста, в какую сторону копать для поиска информации?
Или мне вовсе придется для верхней части и нижней создать отдельные UICollectionView? :scream_cat:

Стремлюсь к такому


#2

до iChat еще не дошел, но пару раз реализовывал такой интерфейс. Вверху ставлю UICollectionView horizontal. Внизу UITableView. Из плюсов еще возможность кастомить sectionHeader и sectionFooter у tableView и использовать редактирование ячейки. Получается максимально гибкий разнообразный интерфейс


#3

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

З.ы. В UICollectionView можно реализовать header’ы и footer’ы у списков. И даже закрепить их, чтоб при сколлинге какой-то секции header всегда был виден. И скрывался лишь при достижении footer’а. Очень рекомендую поиграть с этим )
https://developer.apple.com/documentation/uikit/views_and_controls/collection_views/using_collection_view_compositional_layouts_and_diffable_data_sources


#4

Решение:

  1. https://medium.com/@jamesrochabrun/uicollectionviewdiffabledatasource-and-decodable-step-by-step-6b727dd2485
  2. https://stackoverflow.com/questions/57497461/diffabledatasource-with-multiple-cell-types
  3. https://medium.com/flawless-app-stories/how-to-use-uicollectionviewdiffabledatasource-55c60e9d3897