ios - 如何在视图控制器故事板初始化期间注入视图模型?
问题描述
早些时候我在 viewcontroller 中初始化 viewmodel 对象,但是当我读到 SOLID 原则(D = 依赖反转)时,我们不应该在 viewcontroller 中暴露模型视图。所以我想如果我可以在初始化期间在视图控制器中注入视图模型(视图控制器已经在情节提要文件中设计)那么应该可以工作。
类似于... ViewController 具有自定义初始化,例如... func init(with viewModel : ViewModel)
但有可能吗?
解决方案
有了故事板,你就不能有一个干净利落的初始化程序!
当你调用 viewController 时storyboard.instantiateViewController(withIdentifier: "viewController")
,SYSTEM 会做它的事情并调用
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
您永远不能将该调用重定向到另一个 init 方法。然而,对于以编程方式创建的 viewController 或 nib 创建的 viewController,您可以重定向该调用,如上所示。
您可以使用 xibs 并创建自己的init
方法,也可以采用完整的编程方法。
我已经在这里完整地讨论了这个