2017-08-24 1 views
0

Je suis nouveau sur RxSwift et je travaille sur un échantillon à tester. J'ai montré quelques données sur uitableview avec l'aide de RxSwift. Cependant, lorsque j'essaie de supprimer un élément de tableview et de recharger. Le tableau observable n'a pas été mis à jour et en raison de ce défilement lors des plantages du dernier élément. Voici le code, s'il vous plaît aidez-moi à savoir ce que je fais mal.Tableau d'élément observable dans 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) 

Répondre

1

rendent BehaviorSubject, à savoir: -

var seqValue = BehaviorSuject.create(self.itemArray) 

et au lieu de 'seqValue = Observable.just (self.itemArray)' faire

seqValue.onNext(self.itemArray) 

appeler '.reloadData()' n'est pas nécessaire

+0

J'ai changé à cette ligne let itemValue = BehaviorSubject.init (valeur: self.itemArray) et cela a fonctionné – Kashif

0

Je pense que ce que vous voulez est Variable de RxSwift:

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

afin que vous dans votre .itemDeleted vous pouvez modifier cette variable:

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

Variable est un Observable, les modifications sont automatiquement répercutées. Pas besoin d'appeler reloadData().