【发布时间】:2018-02-06 16:02:29
【问题描述】:
我正在使用 MVVM 并希望将我的 viewModel 分配给 Controllers init 上的 viewController。我以为我会这样实现:
class LoginViewController: UIViewController, UITextFieldDelegate {
init(loginViewModel: LoginViewModel) {
self.loginViewModel = loginViewModel
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
但是我得到了错误:
在从初始化程序返回之前,不会在所有路径上调用 Super.init
这不是正确的路线吗?当它需要一个对象时我将如何正确初始化viewModel,但它必须首先执行网络请求?用空白对象实例初始化?
谢谢
编辑:这就是我现在正在尝试的
initWithViewAndViewModel:(loginView: LoginView, loginViewModel: LoginViewModel) {
super.init()
self.loginView = loginView
self.loginViewModel = loginViewModel
}
【问题讨论】:
-
你需要在你的 viewcontroller 初始化中 super.init。
-
在分配 loginViewModel 之前调用
super.init()。 -
谢谢我试过了,但我明白了......必须调用超类'UIViewController'的指定初始化程序
-
它不是 super.init() ...你必须调用 super.init(with nib: nil, bundle: nil) 左右