私は2つのUITextFieldプロパティと1つのUIButtonを持つ承認コントローラを持っています。ビューをViewModelにバインドしたいが、それを行う方法がわからない。 これは私のAuthorizatioVC.swiftです:rx_tap(UIButton)をViewModelにバインドするにはどうすればいいですか?
class AuthorizationViewController: UIViewController {
let disposeBag = DisposeBag()
@IBOutlet weak var passwordTxtField: UITextField!
@IBOutlet weak var loginTxtField: UITextField!
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
addBindsToViewModel()
}
func addBindsToViewModel(){
let authModel = AuthorizationViewModel(authClient: AuthClient())
authModel.login.asObservable().bindTo(passwordTxtField.rx_text).addDisposableTo(self.disposeBag)
authModel.password.asObservable().bindTo(loginTxtField.rx_text).addDisposableTo(self.disposeBag)
//HOW TO BIND button.rx_tap here?
}
}
そして、これは私のAuthorizationViewModel.swiftです:
final class AuthorizationViewModel{
private let disposeBag = DisposeBag()
//input
//HOW TO DEFINE THE PROPERTY WHICH WILL BE BINDED TO RX_TAP FROM THE BUTTON IN VIEW???
let authEvent = ???
let login = Variable<String>("")
let password = Variable<String>("")
//output
private let authModel: Observable<Auth>
init(authClient: AuthClient){
let authModel = authEvent.asObservable()
.flatMap({ (v) -> Observable<Auth> in
return authClient.authObservable(String(self.login.value), mergedHash: String(self.password.value))
.map({ (authResponse) -> Auth in
return self.convertAuthResponseToAuthModel(authResponse)
})
})
}
func convertAuthResponseToAuthModel(authResponse: AuthResponse) -> Auth{
var authModel = Auth()
authModel.token = authResponse.token
return authModel
}
}
そんなにありがとう!私はそれがどのように動作するかを整理しようとするのは本当に苦労し、あなたの答えは本当に私を助けました。 – Marina
可能なときには主題を使用しないでください。この場合は簡単に避けることができます。 –
@ダニエルあなたに感謝します!あなたはまったく正しいです、私はRxSwiftレポで示唆されているように、私の答えの例を変えて使い方を変えました。 – joern