在ViewController故事板初始化期间如何注入ViewModel?

时间:2019-11-10 08:58:21

标签: ios swift initialization storyboard solid-principles

之前我是在viewcontroller内初始化viewmodel对象,但是随后当我了解SOLID原理(D =依赖关系)时,我们不应在viewcontroller内公开模型视图。 因此,我想到了是否可以在初始化期间将viewmodel注入到viewcontroller中(viewcontroller已经在情节提要文件中进行了设计),那应该可以。

类似... 具有自定义init的ViewController ... func init(with viewModel:ViewModel)

但是有可能吗?

1 个答案:

答案 0 :(得分:0)

使用情节提要,您将无法拥有清晰的初始化器!

当您调用viewController storyboard.instantiateViewController(withIdentifier: "viewController")时,SYSTEM将执行其工作并调用

required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
}

您永远不能将该调用重定向到另一个init方法。但是,对于以编程方式创建的viewController或笔尖创建的viewControllers,您可以如上所示重定向该调用。


您可以使用xibs并创建自己的init方法,也可以采用完整的编程方法。

我已经详细讨论了here