bil*_*.ss 7 uitableview ios rx-swift rx-cocoa
我想从tableView.rx.itemSelected处理过程中获取对象.这个方法返回IndexPath,所以我可以映射这个值.但是如何从索引中获取对象ViewModel?
struct ViewModel {
var items: Observable<[Item]>
}
Run Code Online (Sandbox Code Playgroud)
近似我期待这样的事情(但这个流程是错误的):
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)
Run Code Online (Sandbox Code Playgroud)
我在某处展示了这种可能性,但无法回忆起它.你知道怎么做吗?
小智 31
如果你需要两个indexPath并且model你可以组合2个方法并仅在一个可观察序列中转换它们:
Observable
.zip(tableView.rx.itemSelected, tableView.rx.modelSelected(String.self))
.bind { [unowned self] indexPath, model in
self.tableView.deselectRow(at: indexPath, animated: true)
print("Selected " + model + " at \(indexPath)")
}
.disposed(by: disposeBag)
Run Code Online (Sandbox Code Playgroud)
RxCocoa有两种方法:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8069 次 |
| 最近记录: |