带有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)
- 我们使用一些属性来描述字段,例如
title
和errorMessage
- 然后,我们定义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
isSuccess
和errorMessage
是由控制器管理并用于绑定UI的变量RxSwift - 用于调用身份验证服务的
signin()
方法
- 我们从viewModel字段使用模型电子邮件和密码提出了请求
- 我们在响应时更新可观察对象以处理UI,首先更新
isLoading
状态,然后在成功更新isSuccess
状态时更新 - 相同的错误时,我们将错误消息放在
errorMessage
6-最后! 控制器
- ViewController将配置UI和viewModel之间的绑定
- 绑定带字段 视图的 出口
- 表单有效时,使用Rx添加点击操作以继续登录
- 当我们遇到errorMessage或Success时更新并显示消息。
- 我们为两个变量
errorMessage
和isSuccess
定义了可观察对象 - 我们将
actionButton
绑定为驱动程序 (将UI用作主线程任务的驱动程序 ) - 我们添加了一些过滤器,以避免在
filterNil
对象为nil时filterNil
并在filter{$0}
布尔对象为false时避免调用
… 而已 !
玩Rx并建立有用的viewModel玩得开心!
希望您在实际的Swift项目中实现此功能,以实现一些强大的绑定功能,并避免在Swift文件上添加大量代码!
希望您喜欢本教程..在评论中让我知道! 干杯