【Swift】RxSwiftを使ったTableViewの実装(Delegate/reloadDataは使わない!)
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
がリロードしてくれます。
ソースも減って、元データの監視もできて、この書き方覚えたら元には戻れない。
RxSwiftに関する記事
Author And Source
この問題について(【Swift】RxSwiftを使ったTableViewの実装(Delegate/reloadDataは使わない!)), 我々は、より多くの情報をここで見つけました https://qiita.com/_asa08_/items/f12e5a03ea5433b89e8b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .