Reactive Cocoa - 根据scrollview内容偏移查看可见性

时间:2014-02-17 19:28:21

标签: reactive-cocoa

我正在尝试使用Reactive Cocoa根据scrollview的当前内容偏移y值更改视图的可见性。我的想法是在NSNumber属性上创建一个观察者,该观察者将在scrollview委托的scrollViewDidScroll中被更改。这是我添加到viewDidLoad的代码:

RAC(self.headerView, hidden) = [RACObserve(self, offset) subscribeNext:^(NSNumber *value) {
    return @([value integerValue] > 0);
}];

在return语句上设置一个断点,我看到它被调用一次,但再也没有。我错过了什么?

1 个答案:

答案 0 :(得分:4)

您描述的解决方案,实现一个在主题上调用-sendNext:的方法,是如此常见,以至于有一种方法可以为您完成所有这些:-rac_signalForSelector:。对于代表,您可以在代理上调用-rac_signalForSelector:,如下所示:

RAC(self.headerView, hidden) = [[(id)scrollView.delegate
    rac_signalForSelector:@selector(scrollViewDidScroll:)]
    reduceEach:^(UIScrollView *scrollView) {
        return @(scrollView.contentOffset.y > 0);
    }];

提出代表的一个问题是,在分配代表之前,您必须确保调用任何-rac_signalForSelector:次调用