最近我一直在跟随反应迅速,以实现其功能。这是当前可用的游乐场信息。
我面临的问题是如何将视图模型与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
}
}
}
}
这是ViewController
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()
}
}
当我尝试遵循游乐场的代码{code} viewModel.email <〜formView.emailField.reactive .continuousTextValues.skipNil(){code}进入示例代码,它给我一个错误,指出“ UITextField类型”的Value?没有成员“反应性”。我添加了可用的帮助器功能,emailField没有反应式类别,反之亦然。
答案 0 :(得分:0)
我发现要进行UI绑定,该项目需要ReactiveCocoa pod库。