-
Notifications
You must be signed in to change notification settings - Fork 2
Nested Collection
Anton Goncharov edited this page May 12, 2020
·
4 revisions
UITableViewCell can contain nested UICollectionView and RxDataSourcesExt let you process it in minimalistic way. To achieve it you need to create view model that implements NestedCollectionTableCellViewModel protocol
struct EmbedCollectionCellViewModel: NestedCollectionTableCellViewModel {
typealias TableCellType = EmbedCollectionCell
let id: String
let nestedSections: [CollectionSectionModel]
let rowHeight: CGFloat = 72
}And UITableViewCell that implements CollectionContainableCell
class EmbedCollectionCell: UITableViewCell, ConfigurableCell, CollectionContainableCell {
let collectionView = UICollectionView()
var disposeBag = DisposeBag()
func configure(with viewModel: EmbedCollectionCellViewModel) {}
override func prepareForReuse() {
super.prepareForReuse()
disposeBag = DisposeBag()
}
}For processing events in a nested collection view TableDirector has some methods similar to func cellCreated() (see Events in Cells for details).
director.rx.nestedViewModelSelected(StringCollectionCell.self, in: EmbedCollectionCell.self)
.subscribe()
.disposed(by: disposeBag)
director.rx.nestedCellCreated(ButtonCollectionCell.self, in: EmbedCollectionCell.self) { $0.button.rx.tap }
.subscribe()
.disposed(by: disposeBag)