无法使用 RxSwift 变量 asObservable() 设置绑定(到:UITableView)
Cannot set bind(to: UITableView) with RxSwift Variable asObservable()
我正在尝试绑定(到 :) 一个 collectionView,但 tableView 也不起作用。我有一个 viewModel,我的 Variable<[]> 在哪里,我想在值发生变化时使用我的 tableView 进行订阅。
viewModel.theVariable
.asObservable()
.bind(to: tableView.rx.items(cellIdentifier: "Cell", cellType: UITableViewCell.self)){
(row, item, cell) in
cell.textLabel?.text = item
}
.addDisposableTo(disposeBag)
XCode 告诉我 Type 'inout UITableView' does not conform to protocol 'ReactiveCompatible'
这应该是因为它适用于任何 UIView。
我试过 Observable 和它的 just() 并且这种方法似乎工作正常。问题是我需要有一个变量,我在 viewModel 中设置了一个值,在 View 中我需要观察这个变化。不确定 Observable 是否提供这种方法。
重点是即使使用 Variable 也应该可以吗?这是一个错误吗?我正在使用 Swift 3.2
这是一个工作代码示例:
var dataSource : PublishSubject<[String]> = PublishSubject()
dataSource.asObservable().bind(to: self.mProductsCollectionView.rx.items) { (collectionView, row, element ) in
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "reuseIdentifier", for: IndexPath(row : row, section : 0))
//customize cell
return cell
}.addDisposableTo(bag)
publish.onNext(["blah", "blah", "blah"])
这是 Swift 3
中的工作代码
var countries = Variable([Country]())
countries.asObservable()
.bind(to: tblRx.rx.items(cellIdentifier: "RxCell", cellType: RxCell.self)) { (row, element, cell) in
//customise cell here
}
.disposed(by: disposeBag)
我正在尝试绑定(到 :) 一个 collectionView,但 tableView 也不起作用。我有一个 viewModel,我的 Variable<[]> 在哪里,我想在值发生变化时使用我的 tableView 进行订阅。
viewModel.theVariable
.asObservable()
.bind(to: tableView.rx.items(cellIdentifier: "Cell", cellType: UITableViewCell.self)){
(row, item, cell) in
cell.textLabel?.text = item
}
.addDisposableTo(disposeBag)
XCode 告诉我 Type 'inout UITableView' does not conform to protocol 'ReactiveCompatible'
这应该是因为它适用于任何 UIView。
我试过 Observable 和它的 just() 并且这种方法似乎工作正常。问题是我需要有一个变量,我在 viewModel 中设置了一个值,在 View 中我需要观察这个变化。不确定 Observable 是否提供这种方法。
重点是即使使用 Variable 也应该可以吗?这是一个错误吗?我正在使用 Swift 3.2
这是一个工作代码示例:
var dataSource : PublishSubject<[String]> = PublishSubject()
dataSource.asObservable().bind(to: self.mProductsCollectionView.rx.items) { (collectionView, row, element ) in
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "reuseIdentifier", for: IndexPath(row : row, section : 0))
//customize cell
return cell
}.addDisposableTo(bag)
publish.onNext(["blah", "blah", "blah"])
这是 Swift 3
中的工作代码 var countries = Variable([Country]())
countries.asObservable()
.bind(to: tblRx.rx.items(cellIdentifier: "RxCell", cellType: RxCell.self)) { (row, element, cell) in
//customise cell here
}
.disposed(by: disposeBag)