首页 > 解决方案 > 如何在视图控制器故事板初始化期间注入视图模型?

问题描述

早些时候我在 viewcontroller 中初始化 viewmodel 对象,但是当我读到 SOLID 原则(D = 依赖反转)时,我们不应该在 viewcontroller 中暴露模型视图。所以我想如果我可以在初始化期间在视图控制器中注入视图模型(视图控制器已经在情节提要文件中设计)那么应该可以工作。

类似于... ViewController 具有自定义初始化,例如... func init(with viewModel : ViewModel)

但有可能吗?

标签: iosswiftinitializationstoryboardsolid-principles

解决方案


有了故事板,你就不能有一个干净利落的初始化程序!

当你调用 viewController 时storyboard.instantiateViewController(withIdentifier: "viewController"),SYSTEM 会做它的事情并调用

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

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


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

我已经在这里完整地讨论了这个


推荐阅读