Delegateで実装したくない!
TableViewを実装しようとすると、Delegateで結構ソースの幅を取るのが嫌いです。
しかもTableViewの元データに変更が会った時、わざわざ.reloadData()をしなければならない。。
そんなことしなくても、元データを監視して自動でTableViewをリロードして欲しい!
そんな方法を RxSwift を用いて紹介しちゃう会。
実装
// 元データ
var list: Variable<[String]> = Variable([])
// viewDidLoadとかで読み込み
private func observeList() {
list.asDriver()
.drive(rx.items(cellIdentifier: "cell", cellType: CustomCell.self)) { (row, element, cell) in
// cellの描画処理
cell.setup(element)
}.disposed(by: disposeBag)
}
これでlistの値が更新されると、TableViewがリロードしてくれます。
ソースも減って、元データの監視もできて、この書き方覚えたら元には戻れない。