之前我是在viewcontroller内初始化viewmodel对象,但是随后当我了解SOLID原理(D =依赖关系)时,我们不应在viewcontroller内公开模型视图。 因此,我想到了是否可以在初始化期间将viewmodel注入到viewcontroller中(viewcontroller已经在情节提要文件中进行了设计),那应该可以。
类似... 具有自定义init的ViewController ... func init(with viewModel:ViewModel)
但是有可能吗?
答案 0 :(得分:0)
使用情节提要,您将无法拥有清晰的初始化器!
当您调用viewController storyboard.instantiateViewController(withIdentifier: "viewController")
时,SYSTEM将执行其工作并调用
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
您永远不能将该调用重定向到另一个init方法。但是,对于以编程方式创建的viewController或笔尖创建的viewControllers,您可以如上所示重定向该调用。
您可以使用xibs并创建自己的init
方法,也可以采用完整的编程方法。
我已经详细讨论了here