Rxswift更新Tableview单元格值
问题描述:
我能够将可观察的数据序列绑定到表。 现在我们可以说我每个单元格上都有一个按钮,点击后该单元格的 标签将更改为新值。这个怎么做 ?Rxswift更新Tableview单元格值
到目前为止,我已经做了如下
我已经创建了一个@IBAction
小区中的指向类按钮
然后我做
label.text = "new text"
但是当我向下滚动,然后滚动标签显示以前的值不是新值
以前当我使用数组并将每个值设置为我用于更新的单元格该数组项目,并调用tableview.reloadData
。
我该如何在RxSwift中做这个?
我已经做了迄今为止
tableview.dataSource = nil (then)
myData.bindTo ... (bind again)
这似乎并没有给我正确的方式。那么处理这个问题的适当方法是什么?
答
我能够与RxSwiftCommunity行动
https://github.com/RxSwiftCommunity/Action
的ViewController
variable.asObservable().bindTo(mytable.rx.items(cellIdentifier: "cell")) { (row, person, cell) in
if let cellToUse = cell as? TableViewCell {
cellToUse.person = Variable(person)
cellToUse.button1.rx.action = cellToUse.action
}
}.addDisposableTo(disposeBag)
,并在细胞
class TableViewCell: UITableViewCell {
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var button1: UIButton!
let disposeBag = DisposeBag()
let action = CocoaAction { input in
return .just(input)
}
var person : Variable<Person>!{
didSet {
self.updateUI()
}
}
private func updateUI(){
person.asObservable()
.subscribe(onNext: {
person in
let name : Observable<String> = Observable.of(person.name)
let age : Observable<String> = Observable.of("\(person.age)")
_ = name.bindTo(self.label1.rx.text)
_ = age.bindTo(self.label2.rx.text)
}).addDisposableTo(disposeBag)
action.elements
.asObservable()
.subscribe(onNext: {
_ in
self.label2.text = "asd"
}).addDisposableTo(disposeBag)
}
}
来实现这一目标像以前一样不知道这是正确的方式但它为我工作
感谢(https://rxswift.slack.com/messages/@fpillet
)向我展示的方式