早些时候,我在 viewcontroller 中初始化 viewmodel 对象,但是当我读到 SOLID 原则(D = dependency invsersion)时,我们不应该在 viewcontroller 中公开模型 View 。 所以我想如果我可以在初始化期间将 View 模型注入(inject)到 View Controller 中( View Controller 已经在 Storyboard文件中设计)那么这应该可以工作。
类似... ViewController 具有自定义初始化,例如... func init(with viewModel : ViewModel)
但这可能吗?
最佳答案
对于 Storyboard,你不可能有一个干净的初始化程序!
当您调用 viewController storyboard.instantiateViewController(withIdentifier: "viewController")
系统将执行其操作并调用
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
您永远无法将该调用重定向到另一个 init 方法。然而,对于以编程方式创建的 viewController 或 nib 创建的 viewController,您可以重定向该调用,如上所示。
<小时/>您可以使用 xibs 并创建您自己的 init
方法,也可以采用完整的编程方法。
我已经完整讨论过这个问题 here
关于ios - 如何在 View Controller Storyboard初始化期间注入(inject) View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787077/