Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在viewcontroller故事板初始化期间注入viewmodel?_Ios_Swift_Initialization_Storyboard_Solid Principles - Fatal编程技术网

Ios 如何在viewcontroller故事板初始化期间注入viewmodel?

Ios 如何在viewcontroller故事板初始化期间注入viewmodel?,ios,swift,initialization,storyboard,solid-principles,Ios,Swift,Initialization,Storyboard,Solid Principles,之前我在viewcontroller中初始化viewmodel对象,但当我读到有关SOLID原则(D=依赖项invsersion)时,我们不应该在viewcontroller中公开模型视图。 所以我想,如果我可以在初始化期间将viewmodel注入viewcontroller(viewcontroller已经在脚本文件中设计好了),那么应该可以工作了 类似于。。。 具有自定义初始化的ViewController,如。。。 func init(带viewModel:viewModel) 但是有可能

之前我在viewcontroller中初始化viewmodel对象,但当我读到有关SOLID原则(D=依赖项invsersion)时,我们不应该在viewcontroller中公开模型视图。 所以我想,如果我可以在初始化期间将viewmodel注入viewcontroller(viewcontroller已经在脚本文件中设计好了),那么应该可以工作了

类似于。。。 具有自定义初始化的ViewController,如。。。 func init(带viewModel:viewModel)


但是有可能吗???

对于故事板,你不能有一个干净的初始值设定项

当您调用viewController
storyboard.InstanceEviewController(带有标识符:“viewController”)
时,系统将执行其工作并调用

required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
}
您永远不能将该调用重定向到另一个init方法。然而,对于以编程方式创建的viewController或nib创建的viewController,您可以如上所示重定向该调用


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


我已经详细讨论了这一点

在ViewController的viewDidLoad方法中创建一个viewModel。像这样
viewModel=viewModel(para:type)
所有模型都只与viewModel通信,而ViewController与viewModel通信,viewModel是ViewController和model classum之间的接口,您还需要什么吗?:)