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
がリロードしてくれます。
ソースも減って、元データの監視もできて、この書き方覚えたら元には戻れない。