ios - tableView.rx.itemSelected 中的 RxSwift 双映射

标签 ios uitableview rx-swift rx-cocoa

我想从 tableView.rx.itemSelected 获取对象并对其进行处理。此方法返回 IndexPath,因此我可以映射此值。但是如何从 ViewModel 获取索引处的对象呢?

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)

我在某处展示了这种可能性,但想不起来了。你知道怎么做吗?

最佳答案

如果您同时需要 indexPathmodel,您可以将这两种方法结合起来,并将它们转换为一个可观察的序列:

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)

关于ios - tableView.rx.itemSelected 中的 RxSwift 双映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46521042/

相关文章:

iphone - UITableView 怪异!带图片

ios - 使用 RxSwift 处理请求时出错

ios - Rx swift : Return a new observable with an error

ios - 在 Swift 中计算数据时如何改进 UITableView 滚动?

iphone - 如何将 UITableView 的 viewForHeaderInSection View 锚定到顶部?

ios - 使用带有RxSwift的驱动程序进行订阅

ios - 如何在 UIAlertController 中添加 UIImageView?

objective-c - 每个 Action 方法都需要一个发送者对象吗?

ios - 呈现 View Controller 的自定义转换不起作用

ios - 触摸按钮时有时不会调用 IBAction - Swift