如何通过使用Rxswift获取UIImageView的Observable是空的?

时间:2017-01-10 10:01:56

标签: ios swift rx-swift

我想通过使用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)

我希望像usernameValid一样获得类似的Observable。

2 个答案:

答案 0 :(得分:8)

.rx.image上的UIImageView属性属于UIBindingObserver类型。此类型未实现ObservableType,因此您无法简单地编写imageView.rx.image.orDefault(defaultImage)

如果您想观察image的{​​{1}}属性,则需要使用KVO。

UIImageView

您还可以将// 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 } 属性编写为isEmpty

的扩展名
Reactive

答案 1 :(得分:0)

迅速5

val justView = inflater.inflate(R.layout.mybutton, null, false) as TextView
ayatList.addView(justView)
justView.setText("OK")