ios - 如何在 View Controller Storyboard初始化期间注入(inject) View 模型?

标签 ios swift initialization storyboard solid-principles

早些时候,我在 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/

相关文章:

scala - 对象内未初始化的字段

c++ - 在结构中的数组中初始化结构中的数组时出现问题

ios - 如何从 modalViewController PushViewController

swift - 为 UINavigationController 标题中的单个单词设置字体

swift - 当我在函数中的返回值是可选的时,我是否必须声明 "return nil"语句?

ios - 在 Swift 中使用选择器的正确方法

IOS Google+ 分享显示空的 prefillText

iphone - iOS : Working wth mkv or mka containers

iphone - 如何将 UITextfield 输入与不同的字符串进行比较?

c++ - Placement new 初始化就地对象