带有RxSwift的MVVM登录屏幕

如何将MVVM用于与RxSwift绑定的经典登录屏幕?

这就是我们的方法..(歌曲♩♪♫♬)

让我们玩! ..但首先,什么是MVVM? 你应该在这里看看..

Swift中的MVVM – Artsy Engineering

模型视图ViewModel已成为我在iOS上编写应用程序的默认方式–它使编写iOS应用程序变得很有趣。 我写了……

artsy.github.io

对于RxSwift? 您应该在这里找到所有提示和技巧https://github.com/ReactiveX/RxSwift

所有我们需要的.. 6个步骤 .. !!

现在..让我们开始:

1-模型

我们创建一个使用用户名密码登录的模型

然后,我们需要创建将处理此模型的viewModel ..

2-FieldViewModel

  • 我们定义此协议VSFieldViewModel来表示条目数据字段(在我们的示例中,我们有emailField和passwordField)
  • 我们使用一些属性来描述字段,例如titleerrorMessage
  • 然后,我们定义observables( 变量值:Variable )以在需要时处理和更新用户界面,在本例中,字段errorMessage是稍后绑定的变量。
  • 我们定义一个validate()函数来使用定义的模式来validate()数据
  • 我们添加扩展名,以使用一些实用程序方法来调整字符串或有效模式的有效大小(以后用于有效的密码和电子邮件输入值)

3-密码字段viewModel

  • 除了基本的FieldViewModel外,我们还添加了另一个协议以自定义密码输入的类型(安全文本)
  • viewModel定义validate()方法(字符串输入stize)

我们对下一个viewModel进行相同操作。

4-电子邮件字段viewModel

  • 这里的viewModel定义变量和自定义模式以验证输入值(电子邮件模式格式:xx@xx.xx)
  • 如您所见,某些变量可以为空(甚至为nil),例如errorMessage ,该条目应在无效输入后进行更新

现在..我们应该创建我们的控制器viewModel,它将处理下面的这些字段。

5-登录视图模型

  • 在这个viewModel中,我们将model
  • emailFieldViewModel用来处理电子邮件数据的字段
  • passwordFieldViewModel用于处理密码数据的字段
  • validForm()验证所有输入数据
  • disposeBag附带的disposeBag来管理内存
  • isLoading isSuccesserrorMessage是由控制器管理并用于绑定UI的变量RxSwift
  • 用于调用身份验证服务的signin()方法
  • 我们从viewModel字段使用模型电子邮件和密码提出了请求
  • 我们在响应时更新可观察对象以处理UI,首先更新isLoading状态,然后在成功更新isSuccess状态时更新
  • 相同的错误时,我们将错误消息放在errorMessage

6-最后! 控制器

  • ViewController将配置UIviewModel之间的绑定
  • 绑定带字段 视图的 出口
  • 表单有效时,使用Rx添加点击操作以继续登录
  • 当我们遇到errorMessage或Success时更新并显示消息。
  • 我们为两个变量errorMessageisSuccess定义了可观察对象
  • 我们将actionButton绑定为驱动程序 (将UI用作主线程任务的驱动程序
  • 我们添加了一些过滤器,以避免在filterNil对象为nil时filterNil并在filter{$0}布尔对象为false时避免调用

… 而已 !

玩Rx并建立有用的viewModel玩得开心!

希望您在实际的Swift项目中实现此功能,以实现一些强大的绑定功能,并避免在Swift文件上添加大量代码!

希望您喜欢本教程..在评论中让我知道! 干杯