私UIViewController
と私のビューモデルに依存関係の問題があります。viewDidLoad
基本的に、ビューモデル内でイベントを聞きたいです。現時点では、Class A
ビューモデルをインスタンス化し、ビューモデルUIViewController
のパラメーターを使用しているため、次のようになります。
let viewModel = ViewModel()
let viewController = UIViewController(viewModel)
そして、次のRxCocoa拡張機能を作成しましたviewDidLoad
:
var viewDidLoad: Observable<Void> {
return self.sentMessage(#selector(Base.viewDidLoad)).map { _ in Void() }
}
今、私はこれrx.viewDidLoad
をビューモデル内のオブザーバブルにバインドすることに固執しています。私はそれを行うことができますが、Subjects
ただを使用して反応的なアプローチが必要ですObservable
。ビューモデルのコンストラクターパラメーターとして注入できることはわかっていますが、この方法ではアーキテクチャが壊れてしまい、ビューモデルを内部でインスタンス化するrx.viewDidLoad
ことを許可したくありませんが、注入された依存関係として保持したいと考えています。UIViewController
助言がありますか?ありがとう
解決
@tomahh に感謝します。このソリューションを使用しました。
私のビューコントローラ:
override func configure(viewModel: ViewModel) {
viewModel.bindViewDidLoad(rx.viewDidLoad)
}
私のビューモデル:
func bindViewDidLoad(_ viewControllerDidLoad: Observable<Void>) {
//Create observers which depend on viewControllerDidLoad
}