我将三个信号组合在一起以获取最新值,但我只想在仅更改特定信号(toppestStretchPercentageSignal
)的值时触发订阅。
如何处理?
当这三个信号的任何值发生变化时,将触发以下代码的订阅。
[[RACSignal
combineLatest:@[contentOffsetDidChangeSignal,
toppestVisibleItemSignal,
toppestStretchPercentageSignal]]
subscribeNext:^(RACTuple *tuple) {
NSLog(@"need to be only triggered when toppestStretchPercentageSignal sends the next value");
}];
更新
感谢jhosteny's回答。看起来我只需要在sample:
之后添加combineLatest:
方法,不是吗?
[[[RACSignal
combineLatest:@[contentOffsetDidChangeSignal,
toppestVisibleItemSignal,
toppestStretchPercentageSignal]]
sample:toppestStretchPercentageSignal]
subscribeNext:^(id x) {
NSLog(@"update toppest item frame");
}];
答案 0 :(得分:1)
我想你想要这样的东西:
[[RACSignal
zip:@[toppestStretchPercentageSignal,
[[RACSignal
combineLatest:@[contentOffsetDidChangeSignal,
toppestVisibleItemSignal]]
sample:toppestStretchPercentageSignal]]] subscribeNext:^(RACTuple *tuple) {
RACTupleUnpack(NSNumber *toppestStretch, RACTuple *tuple2) = tuple;
RACTupleUnpack(id contentOffset, id visibleItem) = tuple2;
}];
请参阅GitHub上ReactiveCocoa问题部分中的this comment。