【发布时间】:2021-12-19 01:20:56
【问题描述】:
我正在使用 MVVM 构建应用程序。我需要在我的 ViewController 中初始化 viewModel,我就是这样做的:
private var viewModel: SunCalendarViewModel!
init(viewModel: SunCalendarViewModel) {
self.viewModel = viewModel
super.init(nibName: nil, bundle: nil)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
但是,当我尝试调用我的 viewModel 时,我的应用程序崩溃了,因为它原来是 nil:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
viewModel.search(in: textField.text)
return true
}
我很困惑,因为我相信我确实在 init 中初始化了我的 viewModel,所以它不应该是 nil。在 MVVM 中,我们没有像 MVP 中那样的配置器,所以我不知道我应该在哪里做。任何帮助表示赞赏!
【问题讨论】:
-
您能分享一下您是如何初始化视图控制器的吗?是来自故事板还是以编程方式?
-
是的,如果您使用 segue 并针对 ios13+,那么
@IBSegueAction可以帮助您。 -
我从情节提要初始化我的视图控制器。那么我应该在哪里进行依赖注入呢?