我正在使用swift,reactiveswift和eactevecocoa。
假设我有一个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
。因此,生产者被称为两次。当生产者是网络请求时,这不是可取的。
您可能会有一个单独的可突发性属性,该杂质与信号生物生产器结合,并使两个标签结合到该MutableProperty。如果您不希望0出现,则可以使Mutable Property保持一个可选的INT
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
我知道这是旧的,已经回答了,但是使用属性的替代方法是使用 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)) }
}