RxSwift - UIImageView - наблюдать свойство isHighlighted - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь наблюдать свойство isHighlighted на объекте UIImageView, но кажется, что мой код неверен?Любая идея?

imageView.rx
.observe(Optional<Bool>.self, "isHighlighted")
.subscribe {

}
.disposed(by: disposeBag)

Когда я выделяю imageView, ничего не подписывается.

Ответы [ 3 ]

0 голосов
/ 12 сентября 2018

Вы можете создать расширение:

extension Reactive where Base: UIImageView {

    /// Bindable sink for `isHighlighted` property.
    public var isHighlighted: Binder<Bool> {
        return Binder(base) { imageView, isHighlighted in
            imageView.isHighlighted = isHighlighted
        }
    }

} 

, а затем подписаться на него (или связать его):

self.imageview.rx
    .isHighlighted
    .subscribe(onNext: { [weak self] isHighlighted in
        ...
})
0 голосов
/ 25 апреля 2019

Добавьте это расширение к вашему проекту:

public extension Reactive where Base: UIImageView {
    var isHighlighted: ControlEvent<Void> {
        let source = self.methodInvoked(#selector(setter: Base.isHighlighted)).map { _ in }
        return ControlEvent(events: source)
    }
}

Теперь вы можете наблюдать за изменениями в свойстве isHighlighted:

imageView.rx.isHighlighted.bind {
    if imageView.isHighlighted {
        // do something here
    }
}

0 голосов
/ 12 сентября 2018

вы можете попробовать использовать Bool.self, так как isHighlighted не является обязательным свойством

imageView.rx
            .observe(Bool.self, "isHighlighted")
            .subscribe(onNext: { (isHighlighted) in

            }).disposed(by: disposeBag)
...