Writing table and collection view data sources is tedious. There is a large number of delegate methods that need to be implemented for the simplest case possible.
The problem is even bigger when table view or collection view needs to display animated updates.
This project makes it super easy to just write
dataSequence
.bindTo(tableView.rx_itemsWithDataSource(dataSource))
.addDisposableTo(disposeBag)
where data source is defined as
let dataSource = RxTableViewSectionedReloadDataSource<MySection>()
dataSource.cellFactory = { (tv, ip, i) in
let cell = tv.dequeueReusableCellWithIdentifier("Cell") ?? UITableViewCell(style:.Default, reuseIdentifier: "Cell")
cell.textLabel!.text = "\(i)"
return cell
}
For the animated data sources to be able to detect identity and changes of objects, your section needs to conform to AnimatableSectionModelType
or you can just use AnimatableSectionModel
. Demonstration how to use them and implement AnimatableSectionModelType
is contained inside the Example app.
In case you want to use animated data sources, just replace
let dataSource = RxTableViewSectionedReloadDataSource<MySection>()
with let dataSource = RxTableViewSectionedAnimatedDataSource<MySection>()
and
.bindTo(tableView.rx_itemsWithDataSource(dataSource))
with
.bindTo(tableView.rx_itemsAnimatedWithDataSource(dataSource))
We'll try to keep the API as stable as possible, but breaking API changes can occur.
Podfile
pod 'RxDataSources', '~> 0.4'
Cartfile
github "RxSwiftCommunity/RxDataSources"