Zuerst tut mir leid für den verwirrenden Titel, aber ich kann eigentlich nicht etwas besseres (wenn Sie tun, bitte bearbeiten).UITableViewCell mit UIButton in RxSwift world
Ich habe eine Anwendung mit Koordinator Muster und RxSwift, also alles in allem ich wan alle Navigation Verwandte Sachen zu Coordinator übergeben, so dass es Navigationslogik behandeln kann.
In einer Ansicht Controller habe ich UITableView
mit Zellen, die UIButton
in ihnen hat. Für diesen Fall habe ich ein:
actionButton.rx.tap.bind(to: viewModel.chapterAction).disposed(by: disposeBag)
chapterAction
ist ein PublishSubject<Void>
, da es nur eine Taste tippen reflektiert, aber ich brauche, um mehr Informationen zu Coordinator passieren, so später verwandeln ich diese chapterAction
zu:
var showChapter: Observable<Chapter> = self.chapterAction.mapTo(self.chapter)
Und ich davon aus, dass bis zu diesem Punkt mit diesem Code falsch nichts da ist, so in .bind(to: tableView.rx.items...
des View-Controller ich habe:
viewModel.showChapter.bind(to: self.viewModel.chapterAction).disposed(by: viewModel.disposeBag)
Da ich dies binden wollen, um Controller viewModel
und später subscribe
im Koordinator anzuzeigen.
Es funktioniert alles ok, aber für einige Zellen bekomme ich doppelte Hähne, warum? Ich habe versucht, distinctUntil
, shareReply
setzen, aber nichts scheint mein Problem zu helfen, und es ist kein deterministisch. Ich einige Wiederverwendungs vermuten, beteiligt zu sein, aber ich habe keine Ahnung, wo für dieses Problem zu suchen beginnen ...
Dies ist nicht der Fall - ich mache diese Neuinitialisierung, aber immer noch dupliziert. Obwohl mein Codebeispiel angibt, dass ich die dispose-Tasche von viewModel verwende, habe ich tatsächlich jede Entsorgungs-Tasche ausprobiert, auf die ich von diesem Ort aus Zugriff hatte - die Ansichts-Controller der Zelle, des ViewModels – cojoj