2016年4月15日金曜日

[RxSwift] UITableViewでカスタムセルを使用する

UITableViewで表示するデータをVariableで宣言するし、データの更新はvalueにセットする。

  1. let items = Variable<[Item]>([])
  2. // 新しいデータで更新
  3. self.items.value = updateItems

UITableViewにデータをBindingするには、rx_itemsWithCellIdentifierをコールする。
カスタムセルを使用する場合は、第二引数のcellTypeにセットが必要です。

  1. viewModel?.items
  2. .asDriver()
  3. .drive(tableView.rx_itemsWithCellIdentifier("CustomTableViewCell",cellType: CustomTableViewCell.self)) { row, item, cell in
  4. cell.item = item
  5. cell.tag = row
  6. }
  7. .addDisposableTo(disposeBag)


セルの選択はrx_itemSelectedを使用します。
  1. tableView.rx_itemSelected
  2. .subscribeNext { [unowned self](indexPath) in
  3. self.tableView.deselectRowAtIndexPath(indexPath, animated: true)
  4. // get cell
  5. let cell: CustomTableViewCell = self.tableView.cellForRowAtIndexPath(indexPath)! as! CustomTableViewCell
  6. }
  7. .addDisposableTo(disposeBag)

EditingStyleのセット

rx_itemsWithCellIdentifierを使用すると、DefaultでEditting可能になってしまいます。
不要の場合はUITableViewCellEditingStyle.Noneをセットしましょう。

  1. func tableView(tableView: UITableView, editingStyleForRowAtIndexPath: NSIndexPath) -> UITableViewCellEditingStyle {
  2. return UITableViewCellEditingStyle.None
  3. }

0 件のコメント:

コメントを投稿