【发布时间】:2017-07-21 07:34:33
【问题描述】:
从 UITableViewController 子类化,我在尝试 init TVC 类时遇到两个错误:
class TVC: UITableViewController {
let vm: ViewModel
override init(style: UITableViewStyle){
super.init(style: style)
self.vm = ViewModel(tvc: self) // Error: Property `self.vm` not initialized at super.init call
}
override init(nibName nibNameOrNil: String!, bundle nibBundleOrNil: NSBundle!){
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
// Error: Property `self.vm` not initialized at super.init call
}
}
错误:Property self.vm not initialized at super.init call
使 vm 成为可选(vm:ViewModel?)的工作,但如果可能的话,我希望这样。
我做错了什么?
【问题讨论】:
-
您必须在调用 .init 之前初始化所有 let 属性,但是,在我看来,您的想法是错误的:视图模型不应该知道视图,您应该使用一些观察者模式。
标签: ios swift uitableview swift3 ios10