ios - 在 Controller Init 上分配 viewModel?

标签 ios swift mvvm init

我正在使用 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 isn't called on all paths before returning from initializer

这不是正确的路线吗?另外,当它需要一个对象时,我将如何正确初始化 viewModel,但它必须先执行网络请求?使用空白对象实例初始化?

谢谢

编辑:这就是我现在正在尝试的

initWithViewAndViewModel:(loginView: LoginView, loginViewModel: LoginViewModel) {
        super.init()
        self.loginView = loginView
        self.loginViewModel = loginViewModel
    }

最佳答案

作为最佳实践,

第 1 步:

required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

第 2 步:

init(loginViewModel : LoginViewModel) {
        super.init(nibName: nil, bundle: nil)
        initWithModel:(loginViewModel: LoginViewModel)
    }

第三步:实现initWithModel函数

关于ios - 在 Controller Init 上分配 viewModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45935008/

相关文章:

ios自定义导航(垂直)建议

ios - 将照片库中的图像导入 xcode 中的应用程序

ios - 更改不同类的 CCSpeed Action ?

ios - 突出显示表格 View 单元格时显示波纹效果

iphone - 当 iPhone 锁定和解锁时,ASIHTTPREQUEST 给出错误 (1)

ios - 如何使用 UIBezierPath 更改元素的颜色?

swift - 提供获取当前速度的简单方法(实现速度计)

wpf - 如何使用 Prism 6 正确制作 CanExecute 触发器

WPF 数据绑定(bind)和格式化

wpf - M-V-VM WPF : Way to maintain Databinding while passing parent object of Databound object into IValueConverter?