通过初始化器注入依赖项(使用故事板)? [Swift]
Inject dependencies through initializers (using Storyboards)? [Swift]
我想知道是否有一种方法可以不显式地通过 setter 传递依赖对象。即 setter 依赖关系:
var store: Store!
这能否通过 VC 的初始化程序 (instantiateViewControllerWithIdentifier) 以某种方式完成,即使用故事板进行初始化程序注入?
谢谢
您可以引入一个额外的 class,负责配置您的 viewController。
class MyViewControllerConfigurator {
static func configure(viewController: MyViewController) {
let someDependency = SomeDependency()
viewController.someDependency = someDependency
// force trigger lazy initialization of view (and subviews), which would be nil otherwize in awaikFromNib
_ = viewController.view
// do further configuration here (add child view controller, set delegates ...)
}
}
在MyViewController
中的用法:
class MyViewController: UIViewController {
override func awakeFromNib() {
super.awakeFromNib()
MyViewControllerConfigurator.configure(viewController: self)
}
}
这样,即使在使用 Storyboard 实例化时,您的 viewController 也会得到配置。
我想知道是否有一种方法可以不显式地通过 setter 传递依赖对象。即 setter 依赖关系:
var store: Store!
这能否通过 VC 的初始化程序 (instantiateViewControllerWithIdentifier) 以某种方式完成,即使用故事板进行初始化程序注入? 谢谢
您可以引入一个额外的 class,负责配置您的 viewController。
class MyViewControllerConfigurator {
static func configure(viewController: MyViewController) {
let someDependency = SomeDependency()
viewController.someDependency = someDependency
// force trigger lazy initialization of view (and subviews), which would be nil otherwize in awaikFromNib
_ = viewController.view
// do further configuration here (add child view controller, set delegates ...)
}
}
在MyViewController
中的用法:
class MyViewController: UIViewController {
override func awakeFromNib() {
super.awakeFromNib()
MyViewControllerConfigurator.configure(viewController: self)
}
}
这样,即使在使用 Storyboard 实例化时,您的 viewController 也会得到配置。