合并RACSignal(s)的值,​​但仅在特定信号发送下一个值时触发(ReactiveCocoa)

时间:2014-10-14 10:45:25

标签: objective-c reactive-cocoa

我将三个信号组合在一起以获取最新值,但我只想在仅更改特定信号(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");
    }];

1 个答案:

答案 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

相关问题