を使用してアイテムをバインドするUITableView
があります。簡体字コードは、次のように配列UITableView
複数のUITableViewアイテムをRxSwiftで削除すると、カスタムセルでは機能しません
tableView.register(GroupCell.self)
data.asObservable().bindTo(tableView.rx.items) { tableView, row, group in
let indexPath = IndexPath(row: row, section: 0)
let cell = tableView.dequeueReusableCell(GroupCell.self, indexPath: indexPath)
return cell
}
.disposed(by: disposeBag)
にバインド
let data = Variable<[Int]>([1,2,3,4])
を保持するだけでVariable
を見ても、私はこの問題は、最初の削除ということである
tableView.rx.itemDeleted.subscribe(onNext: { [unowned self] indexPath in self.data.value.remove(at: indexPath.row)}).disposed(by: disposeBag)
を使用してアイテムを削除しますアイテムは機能しますが、同じ位置にある2番目のアイテムを削除すると、そのアイテムは削除されません。私は、別の行の削除ボタン番組を削除アイコンをタップすると削除ボタンがちょうど
は表示されません。以前に削除したアイテムの「位置」には表示されません。
更新:私はカスタムセルを使用すると発生します。単純なStoryBoard
セルでは発生しません。
これは意味があります。それがなぜこの問題を引き起こすのかを説明するために、私はこのメタファーを使いたいと思っています。観測可能なシーケンスと演算子を設定することはパイプラインを作成するのと同じですが、disposeBagを破棄することはパイプラインにスレッジハンマーを掛けるようなものです。パイプラインが破棄されると、データがパイプラインを通って流れることは期待できません。 –
セルがリサイクルされたら何とか処分してはいけないと思いますか? –
私はこれを行う必要は一度もありませんでしたが、あなたとは違った細胞を構築するかもしれません。 Code Review(https://codereview.stackexchange.com)にいくつかのコードを投稿すると、私に知らせてください。 –