3
我想展示B
UIView iff A
UIView可見。我在Objective-C中使用了ReactiveCocoa 2,並試圖找到類似的方式來觀察 UIView的屬性ReactiveSwift
。我仍然在努力學習框架及其用法,但無法提出一個好的解決方案。如果有人能給我一個建議,我會很感激。ReactiveSwift:如何觀察UIView isHidden?
我想展示B
UIView iff A
UIView可見。我在Objective-C中使用了ReactiveCocoa 2,並試圖找到類似的方式來觀察 UIView的屬性ReactiveSwift
。我仍然在努力學習框架及其用法,但無法提出一個好的解決方案。如果有人能給我一個建議,我會很感激。ReactiveSwift:如何觀察UIView isHidden?
下面是來自ReactiveSwift readme的志願例如:
// A producer that sends the current value of `keyPath`, followed by
// subsequent changes.
//
// Terminate the KVO observation if the lifetime of `self` ends.
let producer = object.reactive.values(forKeyPath: #keyPath(key))
.take(during: self.reactive.lifetime)
所以你的情況,你可以做這樣的事情(實際上還沒有嘗試過這種代碼,但它應該傳達的想法):
viewA.reactive.values(forKeyPath: #keyPath(isHidden))
.take(during: self.reactive.lifetime)
.startWithValues { hidden in viewB.isHidden = hidden }
UPDATE:
我只注意到ReactiveCocoa includes a binding target for UIView`s isHidden property,所以你其實可以簡化上述代碼:
viewB.reactive.isHidden <~ viewA.reactive.values(forKeyPath: #keyPath(isHidden))
注意,take(during:)
不再需要使用<~
時,作爲自動<~
栓處置綁定源與所述結合靶的壽命。