Swift 使用RxCocoa处理行选择时出现问题

Swift 使用RxCocoa处理行选择时出现问题,swift,uitableview,rx-swift,rx-cocoa,Swift,Uitableview,Rx Swift,Rx Cocoa,我现在正在为UtableView学习RxCocoa。显示单元格时一切都正常,但当我添加闭包来处理行选择时,会出现延迟。我的意思是,当我点击第一行时,什么都没有发生,当我点击第二行时,闭包显示了我对第一行的反应,第三行-第二行,等等。。。 请看一下我的代码,并帮助我解决这个问题 import RxCocoa import RxRelay import RxSwift import UIKit final class ListViewController: UITableViewControlle

我现在正在为UtableView学习RxCocoa。显示单元格时一切都正常,但当我添加闭包来处理行选择时,会出现延迟。我的意思是,当我点击第一行时,什么都没有发生,当我点击第二行时,闭包显示了我对第一行的反应,第三行-第二行,等等。。。 请看一下我的代码,并帮助我解决这个问题

import RxCocoa
import RxRelay
import RxSwift
import UIKit

final class ListViewController: UITableViewController {
    
    private var todos = BehaviorRelay<[String]>(value: ["Clean the apt", "Learn to code", "Call mom", "Do the workout", "Call customers"])
    let bag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()
        title = "RxTodoList"
        tableView.dataSource = nil
        tableView.delegate = nil
        
        todos
            .bind(to: tableView.rx.items) { (tableView, row, element) in
                let cell = tableView.dequeueReusableCell(withIdentifier: "TodoCell")!
                cell.textLabel?.text = "\(element)"
                return cell
            }
            .disposed(by: bag)
        
        tableView.rx
            .modelDeselected(String.self)
            .asObservable()
            .subscribe(onNext: { [weak self] todo in
                print(todo)
            })
            .disposed(by: bag)
    }
    
}
导入RxCocoa
进口RX继电器
导入RxSwift
导入UIKit
最终类ListViewController:UITableViewController{
private var todos=BehaviorRelay(值:[“清理apt”、“学会编码”、“打电话给妈妈”、“做锻炼”、“打电话给客户”])
let bag=DisposeBag()
重写func viewDidLoad(){
super.viewDidLoad()
title=“RxTodoList”
tableView.dataSource=nil
tableView.delegate=nil
待办事项
.bind(到:tableView.rx.items){(tableView,行,元素)在
让cell=tableView.dequeueReusableCell(标识符为“TodoCell”)!
cell.textLabel?.text=“\(元素)”
返回单元
}
.处置(由:袋)
tableView.rx
.model取消选择(String.self)
.asObservable()
.subscribe(onNext:{[weak self]todo in
打印(待办事项)
})
.处置(由:袋)
}
}

您使用的是
modelSelected
而不是
modelSelected

此外,您不应该将主题、中继或可观察对象作为
var
它们应该始终是
let
s。所以
var todos=BehaviorRelay
。。。应该是
让todos=BehaviorRelay

最后:

受试者[和接力者]的使用应主要停留在样本和测试领域。主题是开始学习Rx的好方法。他们减少了新开发人员的学习曲线,但是他们提出了几个问题


--哦!当然我太不准确了!非常感谢