RxSwift-UIImageView-观察属性isHighlighted

时间:2018-09-12 11:03:05

标签: ios iphone swift rx-swift

我正在尝试观察对象UIImageView上的属性“ isHighlighted”,但似乎我的代码不正确?有想法吗?

function is_prime($p) {
    return ($p > 1) &&  (($p%2 >= 1) && ($p%3 >= 1) && ($p%5 >= 1)) ||  in_array($p, [2,3,5]);
}

当我将imageView设置为突出显示时,没有任何预订。

3 个答案:

答案 0 :(得分:0)

您可以尝试使用Bool.self吗,因为isHighlighted不是可选属性

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

            }).disposed(by: disposeBag)

答案 1 :(得分:0)

将此扩展添加到您的项目中:

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
    }
}

答案 2 :(得分:-1)

您可以创建扩展程序:

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
        ...
})