我正在尝试使用Reactive Cocoa根据scrollview的当前内容偏移y值更改视图的可见性。我的想法是在NSNumber属性上创建一个观察者,该观察者将在scrollview委托的scrollViewDidScroll中被更改。这是我添加到viewDidLoad的代码:
RAC(self.headerView, hidden) = [RACObserve(self, offset) subscribeNext:^(NSNumber *value) {
return @([value integerValue] > 0);
}];
在return语句上设置一个断点,我看到它被调用一次,但再也没有。我错过了什么?
答案 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:
次调用。