RxSwift,RxCocoa和UITableview

时间:2017-09-13 15:45:00

标签: ios swift uitableview rx-swift

使用RxSwift实现UITableView时遇到问题。

我尝试使用以下代码将一个模型数组的observable绑定到表项。 models.bind(to: self.tableView.rx.items(cellIdentifier: "Cell", cellType: ModelTableViewCell.self

但是当我这样做时会给我以下错误:Type 'inout UITableView' does not conform to protocol 'ReactiveCompatible'我知道错误不对,因为NSObject扩展了ReactiveCompatible,所以UITableView也可以。此外,我的项目代码与RxSwiftCommunity

上显示的示例完全不同

我创建了一个有错误的小示例项目。

[Example code showing the error (picture)]

1 个答案:

答案 0 :(得分:5)

Swift是一种非常好的语言,但有时会发生编译器无法识别参数类型的时刻。然后,您需要明确定义一种参数。在您的情况下,您需要定义块参数的类型,请参阅代码:

func bindRx(viewModel: ViewModel) {
    viewModel.models.bind(to: tableView.rx.items(cellIdentifier: ModelTableViewCell.ReuseIdentifier,
                                                 cellType: ModelTableViewCell.self)) { (_, model: Model, cell: ModelTableViewCell) in
        cell.textLabel?.text = model.name
    }
    .addDisposableTo(disposeBag)
}

enter image description here