3

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
}
4

3 に答える 3