7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Swift】RxSwiftを使ったTableViewの実装(Delegate/reloadDataは使わない!)

Last updated at Posted at 2019-06-27

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に関する記事

【Swift】RxSwiftでボタンのタップイベントを拾う

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?