[RxSwift]cell側のボタンtapをVCで検知する
前提
例えば、
Rxを使用するプロジェクトでCell内部のbuttonタップ検知を行いたい場合は多くあると思います。
しかし、Rxを採用しているのでCell側のbuttonでaddTargetしてDelegateを使って。。。のようなことはあまり使うべきではないです。
そもそもRxはそれらの課題解決を目的としても作られた背景もあります。
ではどのように実装しましょうか。
実装方法はいくつかあると思うのですが、今回はそのうちの一つを紹介していきたいと思います。
RxSwiftを採用しているということはおそらくMVVMアーキテクチャを合わせて採用していると思います。
MVVMアーキテクチャではViewController側でViewModelの参照を持つことがあります。しかしカスタムセルを作っている場合cell側でもViewModelの参照を持たせて。。といった感じになります。
大きなプロジェクトでは話は別ですが、タップ検知しかしないcell側でViewModelの参照を持たせて、DIさせてと毎回書くのは面倒だし(この行為自体は悪いことではない)タップ検知をしたいだけなのに他に書くコードが多すぎて冗長にも感じられるかと思います。
そのような時はViewController側でコードを書いてあげることも一つの手でしょう。
// cell内のお気に入りボタンタップを検知する
cell.favoriteButton.rx.tap
.subscribe(onNext: { _ in
viewModel.input.favoriteButtonTapped.onNext(())// ViewModelにイベントを送る
}).disposed(by: cell.disposeBag)// ←cell側のdisposeBagを使用する
Author And Source
この問題について([RxSwift]cell側のボタンtapをVCで検知する), 我々は、より多くの情報をここで見つけました https://qiita.com/pecoms/items/ad8c9e7347187f22153b著者帰属:元の著者の情報は、元の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 .