2017-08-24 135 views
0

我是RxSwift的新手,并且需要测试一些样本。我在RxSwift的帮助下显示了一些关于uitableview的数据。但是,当我尝试从tableview中删除任何项目并重新加载。 Observable数组没有更新,并且由于在最后一项崩溃时滚动。下面是代码,请帮助我知道我做错了什么。RxSwift中可观察元素的数组

self.itemArray = NSMutableArray(objects: "First Item","Second Item","Third Item","Fourth Item","Fifth Item","Sixth Item","Seventh Item","Eight Item","Nineth Item","Tenth Item","Eleventh Item","Twelveth Item","Thirtheenth Item","Fourtheenth Item","Fifteenth Item","Sixteenth Item","Seventhenth Item","First Item","Second Item","Third Item","Fourth Item","Fifth Item","Sixth Item","Seventh Item","Eight Item","Nineth Item","Tenth Item","Eleventh Item","Twelveth Item","Thirtheenth Item","Fourtheenth Item","Fifteenth Item","Sixteenth Item","Seventhenth Item") 


var seqValue = Observable.just(self.itemArray) 
seqValue 
    .bind(to: rxtableView.rx.items) { (tableView, row, seqValue) in 
     let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")! 
     cell.textLabel?.text = self.itemArray.object(at: row) as? String 
     cell.backgroundColor = .clear 
     return cell 
    }.disposed(by: disposeBag) 


self.rxtableView.rx.itemDeleted 
    .subscribe(onNext: { [unowned self]indexPath in 
     self.itemArray.removeObject(at: indexPath.row) 
     seqValue = Observable.just(self.itemArray) 
     self.rxtableView.reloadData() 
    }).addDisposableTo(disposeBag) 

回答

1

使其BehaviorSubject,即 -

var seqValue = BehaviorSuject.create(self.itemArray) 

,而不是 'seqValue = Observable.just(self.itemArray)',并做

seqValue.onNext(self.itemArray) 

调用 '.reloadData()'没有必要

+0

我改变了这一行let itemValue = BehaviorSubject.init(value:self.itemArray),它的工作 – Kashif

0

我想你想要的是RxSwift的Variable

let seqValue = Variable<String>(["First Item", ...]) 

让你在你的.itemDeleted可以修改变量:

seqValue.value.remove(at: indexPath.row) 

VariableObservable,所以更改会自动传播。无需拨打reloadData()

相关问题