我希望模型由实现开发人员传入,我希望它是强制性的。
let model: PagingTutorialModel
init(withModel model: PagingTutorialModel) {
self.model = model
super.init(nibName: nil, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
错误:属性' self.model'没有在super.init调用初始化
答案 0 :(得分:3)
视图控制器实际上不具有let
值,除非您为它们指定默认值。
let foo = 3
问题是,当我们从故事板初始化视图控制器时,iOS会使用init(coder:)
初始化视图控制器。我们没有机会在初始化期间传递值,因此我们无法拥有let
属性。
答案 1 :(得分:0)
原因是,在init?(coder:)
中您还需要设置模型。根据您的设置,一种解决方案可能是陷入init?(coder:)
:
required init?(coder aDecoder: NSCoder) {
fatalError("Not implemented")
}
但是这样做,您无法从故事板初始化此视图控制器。但在我看来,故事板仅用于原型设计。