0
RxSwift
とMVVMパターンを使用する場合、UIButton
のタップジェスチャーをUITableViewCell
に処理する最良の方法は何ですか?私はそれをviewModel
の変数にバインドする必要がありますか?UITableViewCellでUITableViewCellのUIButtonタップジェスチャーをviewModelで観測可能にする
RxSwift
とMVVMパターンを使用する場合、UIButton
のタップジェスチャーをUITableViewCell
に処理する最良の方法は何ですか?私はそれをviewModel
の変数にバインドする必要がありますか?UITableViewCellでUITableViewCellのUIButtonタップジェスチャーをviewModelで観測可能にする
あなたのセルで観測可能なタップを提供し、それをvcからバインドすることができます。
VCで次にclass SomeCell: UITableViewCell {
@IBOutlet var detailsButton : UIButton!
var detailsTap : Observable<Void>{
return self.detailsButton.rx.tap.asObservable()
}
}
:
private func bindTable(){
//Bind the table elements
elements.bind(to: self.table.rx.items) { [unowned self] (table, row, someModel) in
let cell = cellProvider.cell(for: table, at: row) //Dequeue the cell here (do it your own way)
//Subscribe to the tap using the proper disposeBag
cell.detailsTap
.subscribe(onNext:{ print("cell details button tapped")})
.disposed(by: cell.disposeBag) //Notice it's using the cell's disposableBag and not self.disposeBag
return cell
}
.disposed(by: disposeBag)
//Regular cell selection
self.table.rx
.modelSelected(SomeModel.self)
.subscribe(onNext:{ model in print("model")})
.disposed(by: self.disposeBag)
}
ボタンは、私は4を仮定しているので?クラスをviewControllerから離れた場所に配置するには、viewControllerでNotificationCenter.default.addObserverを使用し、セルクラス内でボタンをクリックすると呼び出されるNotificationCenter.default.postを使用することをお勧めします。 – Vollan