gpt4 book ai didi

ios - Rxswift 更新 Tableview 单元格值

转载 作者:行者123 更新时间:2023-11-29 00:27:56 24 4
gpt4 key购买 nike

我能够将可观察的数据序列绑定(bind)到表。现在假设我在每个单元格上都有一个按钮,单击该按钮会更改该单元格的标签为新值。如何做到这一点?

到目前为止我做了如下

我已经在单元格指向类中为该按钮创建了一个@IBAction

那我在做

label.text = "new text"

但是当我向下滚动然后向上滚动时,标签显示以前的值而不是新值

以前,当我使用数组并将每个值设置为一个单元格时,我用来更新该数组项并调用tableview.reloadData

我如何在 RxSwift 中执行此操作??

我已经做了

tableview.dataSource = nil (then)
myData.bindTo ... (bind again)

在我看来这不是正确的方法。那么处理这个问题的适当方法是什么?

最佳答案

我可以通过 RxSwiftCommunity Action 实现这一点

https://github.com/RxSwiftCommunity/Action

View Controller

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) 为我指路

关于ios - Rxswift 更新 Tableview 单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42570433/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com