2017-01-10 5 views
2

Rxswiftを使用してObservable of UIImageViewを空にしたいと思っています。私はusernameValidのような観察可能な類似した取得したいRxswiftを使用してUIImageViewのObservableを取得する方法は空ですか?

let usernameValid = firstTextField.rx.text.orEmpty 
    .map { $0.characters.count >= 1 } 
    .shareReplay(1) 

let passwordValid = secondTextField.rx.text.orEmpty 
    .map { $0.characters.count >= 1 } 
    .shareReplay(1) 

let everythingValid = Observable.combineLatest(usernameValid, passwordValid) { $0 && $1 } 
    .shareReplay(1) 

everythingValid.bindTo(submitButton.rx.isEnabled).addDisposableTo(disposeBag) 

は、ここに私のコードです。

答えて

4

UIImageView.rx.imageプロパティはUIBindingObserverです。このタイプはObservableTypeを実装していないので、単にimageView.rx.image.orDefault(defaultImage)と書くことはできません。

imageプロパティがUIImageViewであることを確認するには、KVOを使用する必要があります。

// this is "equivalent" to `firstTextField.rx.text` 
let imageObs: Observable<UIImage?> = imageView.rx.observe(Optional<UIImage>.self, "image") 

// default image will act in the same way the empty string is used in the case of `orEmpty` 
let defaultImage = UIImage(named: "defaultImage")! 
let imageWithDefaultObs: Observable<UIImage> = imageObs.map { 
    // return defaultImage when $0 is nil 
    return $0 ?? defaultImage 
} 
関連する問題