我UIViewController
和我的视图模型存在依赖性问题。viewDidLoad
基本上我想在我的视图模型中收听事件。目前我有一个Class A
实例化视图模型并UIViewController
带有参数的viewModel,所以:
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
}