如何在视图控制器情节提要初始化期间注入视图模型?

问题描述 投票:0回答:1

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

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

但是有可能吗?

ios swift initialization storyboard solid-principles
1个回答
0
投票

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

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

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

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


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

我已经在here中进行了完整的讨论

© www.soinside.com 2019 - 2024. All rights reserved.