tableView.rx.itemSelected
からオブジェクトを取得したいと思っています。このメソッドはIndexPath
を返すので、この値をマップできます。しかし、ViewModel
からインデックスのオブジェクトを取得する方法は?tableView.rx.itemSelectedのRxSwift二重マッピング
struct ViewModel {
var items: Observable<[Item]>
}
おおよそ私はこのような何かを期待しています(ただし、この流れは間違っている):
tableView.rx.itemSelected
.map { indexPath -> Item in
return viewModel.items.map {$0[indexPath.row]}
}
..subscribe(onNext: { [unowned self] item in
//other actions with Item object
})
.disposed(by: disposeBag)
私はどこかにこの可能性を示したが、それを思い出す傾けます。あなたはそれをどうやって考えていますか?
public var itemSelected: ControlEvent<IndexPath> { get }
選択した項目のIndexPath
を返し
とモデル要素を返し
public func modelSelected<T>(_ modelType: T.Type) -> ControlEvent<T>
が
あなたの例によると、それはなります:
tableView.rx.modelSelected(Item.self)
.subscribe(onNext: { [weak self] item in
// other actions with Item object
}).addDisposableTo(disposeBag)
'map'関数で' viewModel.items [indexPath.row] 'を返さないのはなぜですか? –
@NikitaErmolenkoこの場合、エラーが発生します:タイプ 'Observable <[Item]>'には添え字メンバーがありません –
どのようなタイプの 'viewModel.items'ですか? –