如何在 RxSwift 中选择当前索引路径?

Posted

技术标签:

【中文标题】如何在 RxSwift 中选择当前索引路径?【英文标题】:How can I select the current index path in RxSwift? 【发布时间】:2020-04-22 13:27:57 【问题描述】:

使用 modelSelected() 方法时,我需要在表格视图中选择特定项目。

当我实现 itemSelected() 方法时,我能够使用 index.row

选择项目
self.quickLookController.currentPreviewItemIndex = index.row

我现在不知道如何获取我的表格视图的 currentPreviewItemIndex。当我选择它时,它会显示一条消息,指出没有可用的数据。

        _ = documentTableView.rx.modelSelected(Structured.self).subscribe(onNext:  structured in
            if structured is Document 

//            self.quickLookController.currentPreviewItemIndex = ...

            self.parent?.navigationController?.show(self.quickLookController, sender: self)
            
            if structured is Structure 
                let structure = structured as! Structure
                let sb = UIStoryboard(name: "Main", bundle: nil)
                let documentViewCtrl = sb.instantiateViewController(withIdentifier: "DocumentListViewController") as! DocumentListViewController
                self.treeSource?.select(structure)
                documentViewCtrl.treeSource = self.treeSource
                documentViewCtrl.navigationItem.title = structure.name
                self.navigationController?.pushViewController(documentViewCtrl, animated: true)
            
        )

【问题讨论】:

【参考方案1】:

您可以压缩两个 observable item selected 和 modelSelected。

    Observable.zip(tableView.rx.itemSelected, tableView.rx.modelSelected(Model.self)).bind 
        [weak self] indexPath, model in
        guard let self = self else  return 
        print(indexPath, model)
        self.quickLookController.currentPreviewItemIndex = indexPath.row

    .disposed(by: disposeBag)

【讨论】:

以上是关于如何在 RxSwift 中选择当前索引路径?的主要内容,如果未能解决你的问题,请参考以下文章

tableview单元格索引路径的选择

从 UICollectionView 索引路径获取模型

如何在collectionView中找到索引路径

如何快速获取集合视图的当前索引路径

默认情况下,如何选择 UICollectionView 的特定索引路径?

如何使用 RxSwift 在一个地方捕获来自两个请求的错误