Last active
March 13, 2017 12:00
-
-
Save igorkulman/2bb98d3398d1f211ba0f81c0f6ee90e7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
numberTextField.reactive.text.bidirectionalBind(to: viewModel.phoneNumber).dispose(in: reactive.bag) | |
numberTextField.reactive.textColor.bind(signal: viewModel.isValid.map({ [unowned self] (isValid) in return isValid ? self.view.tintColor : UIColor.red})).dispose(in: reactive.bag) | |
self.navigationItem.rightBarButtonItem.reactive.isEnabled.bind(signal: viewModel.isValid).dispose(in: reactive.bag) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class NumberSelectionViewModel { | |
let selectedCountry = Observable<CountryDefinition?>(nil) | |
let phoneNumber = Observable<String?>(nil) | |
let isValid: Signal<Bool, Property<Any>.Error> | |
init() { | |
isValid = combineLatest(self.selectedCountry, self.phoneNumber) { | |
(country: CountryDefinition?, number: String?) in if let number = number, let parsedNumber = try? NBPhoneNumberUtil.sharedInstance().parse(number, defaultRegion: country?.isoCode ?? "de") { | |
return NBPhoneNumberUtil.sharedInstance().isValidNumber(parsedNumber) | |
} else { | |
return false | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class NumberSelectionViewModel { | |
let selectedCountry = Variable<CountryDefinition?>(nil) | |
let phoneNumber = Variable<String?>(nil) | |
let isValid : Observable<Bool> | |
init() { | |
isValid = Observable.combineLatest(selectedCountry.asObservable(), phoneNumber.asObservable()) { | |
(country: CountryDefinition?, number: String?)->Bool in if let number = number, let parsedNumber = try? NBPhoneNumberUtil.sharedInstance().parse(number, defaultRegion: country?.isoCode ?? "de") { | |
return NBPhoneNumberUtil.sharedInstance().isValidNumber(parsedNumber) | |
} else { | |
return false | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
numberTextField.rx.text.bindTo(viewModel.phoneNumber).disposed(by: disposeBag) | |
viewModel.isValid.bindTo(navigationItem.rightButtonItem.rx.isEnabled).disposed(by: disposeBag) | |
viewModel.isValid.asObservable().map({[unowned self] (isValid) in return isValid ? self.view.tintColor : UIColor.red}).bindTo(numberTextField.rx.textColor).disposed(by: disposeBag) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment