使用 Reactive Swift 将视图模型与视图绑定



我最近一直在关注反应式 swift 来实现它的功能。这是当前可用的游乐场信息。

https://github.com/ReactiveCocoa/ReactiveSwift/blob/master/ReactiveSwift-UIExamples.playground/Pages/ValidatingProperty.xcplaygroundpage/Contents.swift

我面临的问题是如何将视图模型与UI元素连接起来以监视其值。

我尝试的是模拟带有两个文本字段和一个按钮的简单登录屏幕。我的目标是监视这两个文本字段的 i/p,按钮状态将基于此更改。

这是视图模型

import Foundation
import ReactiveSwift
class LoginViewModel {
/*
* A property, represented by the PropertyProtocol, stores a value and notifies observers about future changes to that value. A validating protocol is nothing but a property that needs to be validated ( the validation is a lambda function)
*/
let email: ValidatingProperty<String, Error>
let password : ValidatingProperty<String,Error>
init() {
email =  ValidatingProperty("") { input in
if (input.isEmpty == true || (input.isEmpty && input.isValidEmail() == false)){
return .invalid(CustomError.init(title: nil, description: "Improper Email", code:  001))
}
return .valid
}
password = ValidatingProperty("") { input in
if (input.isEmpty == true || (input.isEmpty && input.isValidPassword() == false)){
return .invalid(CustomError.init(title: nil, description: "Kindly please provide a password", code:  002))
}else {
return .valid
}
}
}
}

这是视图控制器

class ViewController: UIViewController {
@IBOutlet weak var emailField: UITextField! // Observable. Signal
@IBOutlet weak var passwordField: UITextField! // Observable. Signal
@IBOutlet weak var submitBtn: UIButton! 
var viewModel: LoginViewModel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
viewModel = LoginViewModel()
}
}

当我尝试遵循操场的代码{代码}viewModel.email <~ formView.emailField.reactive .continuTextValues.skipNil(){code} 到我的示例代码中,它给了我一个错误,指出类型为"UITextField?"的值没有成员"反应"。我添加了可用的辅助函数,emailField 没有反应式类别,反之亦然。

我发现要进行UI绑定,该项目需要ReactiveCocoa pod库。

相关内容

  • 没有找到相关文章

最新更新