Rxswift更新Tableview单元格值

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)向我展示的方式