Skip to content

Instantly share code, notes, and snippets.

@stinger
Created January 2, 2017 15:07
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stinger/e7eec5846e9143f03f36f47b2bb01d39 to your computer and use it in GitHub Desktop.
Save stinger/e7eec5846e9143f03f36f47b2bb01d39 to your computer and use it in GitHub Desktop.
RxSwift MVVM
import RxSwift
// -- View Model
struct LoginViewModel {
var username = Variable<String>("")
var password = Variable<String>("")
var isValid : Observable<Bool>{
return Observable.combineLatest( self.username, self.password)
{ (username, password) in
return username.characters.count > 0
&& password.characters.count > 0
}
}
}
// ----- View Controller
import RxSwift
import RxCocoa
class LoginViewController {
var usernameTextField: UITextField!
var passwordTextField: UITextField!
var confirmButton: UIBUtton!
var viewModel = LoginViewModel()
var disposeBag = DisposeBag()
override func viewDidLoad(){
super.viewDidLoad()
usernameTextField.rx.text.bindTo(viewModel.username).addTo(disposeBag) passwordTextField.rx.text.bindTo(viewModel.username).addTo(disposeBag)
//from the viewModel
viewModel.rx.isValid.map{ $0 }
.bindTo(confirmButton.rx.isEnabled)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment