私はRxSwift
を新しくしており、以下を達成したいと考えています。私はemail and password TextField
です。 textfields
の両方にテキストを入力したら、ボタンを有効にする必要があります。RxSwiftロジックを有効にするボタン
:
txtEmail.rx.text.asObservable()
.bindTo(viewModel.email)
.addDisposableTo(disposeBag)
txtPassword.rx.text.asObservable()
.bindTo(viewModel.password)
.addDisposableTo(disposeBag)
viewModel.buttonEnabled
.bindTo(btnLogin.rx.isEnabled)
.addDisposableTo(disposeBag)
そして、ここでは私のViewModelです:
import Foundation
import RxSwift
import RxCocoa
class LoginViewModel {
let email = Variable<String?>("")
let password = Variable<String?>("")
var buttonEnabled: Observable<Bool>
init() {
var processedEmail: Observable<String>!
var processedPassword: Observable<String>!
processedEmail = email.asObservable().map(String.toLower as! (String?) -> String).map(String.trimWhiteSpace as! (String?) -> String)
processedPassword = password.asObservable().map(String.toLower as! (String?) -> String).map(String.trimWhiteSpace as! (String?) -> String)
let emailValid = processedEmail.asObservable().map(String.isNotEmpty)
let passwordValid = processedPassword.asObservable().map(String.isNotEmpty)
buttonEnabled = Observable.combineLatest(emailValid, passwordValid) {
return $0 && $1
}
}
func didTapLoginButton() {
print("hello \(email.value)")
}
}
私viewmodel
のinit
方法が終了れることは決してありませんいくつかの理由。 誰かが私を助けることができますか?
あなたは何を意味しますか「決して終わらない」? – tomahh
@tomahh initメソッドのEXC_BAD_INSTRUCTIONを取得しました – Steaphann
'toLower'と' trimWhiteSpace'は実際に '(String?) - > String'型を持っていますか?それは私がクラッシュを引き起こす可能性があると思う唯一の線です。 – tomahh