2017-02-15 44 views
2

我正在使用Swift,ReactiveSwift和ReactiveCocoa。如何將單個SignalProducer綁定到多個UI組件?

假設我有一個單一的SignalProducer,在生產Event時是否有更新多個UI組件的方法?

例如。

let sp = SignalProducer<Int, NoError> = // ... 
label1.reactive.text <~ sp.map { String($0) } 
label2.reactive.text <~ sp.map { "You entered \(String($0)) } 

我目前面臨的問題是,SignalProducer是,只要我使用<~的操作者。因此,製片人被召喚兩次。當生產者是網絡請求時,這是不可取的。

回答

4

您可以將單獨的MutableProperty綁定到SignalProducer,並將兩個標籤綁定到該MutableProperty。如果你不想讓0顯示出來,你可以使MutableProperty舉行一個可選的詮釋

let sp = SignalProducer<Int, NoError> = // ... 
let result = MutableProperty(0) 
label1.reactive.text <~ result.map { String($0) } 
label2.reactive.text <~ result.map { "You entered \(String($0)) } 
result <~ sp 
+0

謝謝 - 這工作得很好! – sdasdadas

1

我知道這是舊的,已經回答了,但要使用物業的替代方法是使用startWithSignal

let sp: SignalProducer<Int, NoError> = // ... 
sp.startWithSignal { (signal, _) in 
    label1.reactive.text <~ signal.map { String($0) } 
    label2.reactive.text <~ signal.map { "You entered \(String($0)) } 
} 
+0

謝謝!這也很有用! – sdasdadas

相關問題