Базовый класс. Промежуточный слой между UITableView/UICollectionView и данными. Формирует ячейки на основе данных, полученных от dataAdapter реализующий протокол ARCHListDataSourceAdapter
Работает с:
- ячейками (реализующие протокол
ARCHCell
) - данными (реализующие протокол
ARCHCellViewModel
)
В DataSource реализованны методы:
- количество секций
- количество ячеек в секции
- формирование ячейки
Все остальные функции UITableViewDataSource/UICollectionViewDataSource
проксируются через свойство dataSource.
Для более детальной настройки ячеек используете delegate, реализующий протокол ARCHListDataSourceDelegate
.
Реализации:
ARCHTableViewDataSource
для UITableViewARCHCollectionViewDataSource
для UICollectionView
Протокол адаптирующий ваши данные для DataSource.
Дженирик класс, реализующий протокол ARCHListDataSourceAdapter
.
Используется для хранения массива и адаптации к отображению одного типа ячеек в одной секции.
Для автоматической конвертации данных в во вью модели, используйте протокол ARCHModelAbstractInitilizable
.
Или при инициализации укажите свой маппинг данных.
- iOS 10.0+
- Swift 4.1
- Xcode 9
Для интеграции HHList пропиши в Cartfile
:
github "Heads-and-Hands/architecture-team-a-ios"
Запусти команду carthage update --platform ios
. Добавь в проект HHList.framework
При помощи шаблона TableViewCell или CollectionViewCell создай файлы для ячейки:
- Cell
- CellViewModel
- Cell.xib удали если не используешь, а если используешь поставь галочку http://prntscr.com/kiweng
Можешь реализовать протокол ARCHListDataSourceAdapter
, а можешь воспользоваться уже готовым, например:
lazy var dataAdapter = ARCHEmptyListDataAdapter<SimpleEntity, ExampleCellViewModel>()
- Зарегистрируй класс ячейки:
dataSource.register(cell: ExampleCell.self, for: ExampleCellViewModel.self)
Если у ячейки есть одноименный xib, то он тоже будет зарегестрирован во вью
- Подключи dataAdapter
- Опционально. Для более детальной настройки подключи dataSource или delegate
Или используй уже готовое решение ARCHTableViewController/ARCHCollectionViewController для UITableView/UICollectionView соответственно