【发布时间】:2013-03-08 16:07:26
【问题描述】:
我正在尝试使用 Reactive Cocoa,但在组合来自多个 UIControl 的信号时遇到问题。
我正在为 UIEdgeInsets 创建一个编辑器,并且有四个 UISteppers,分别用于顶部、左侧、底部和右侧的插图。
我想要做的是:
RAC(self.insets) = [RACSignal combineLatest:@[
[topStepper rac_signalForControlEvents:UIControlEventValueChanged],
[leftStepper rac_signalForControlEvents:UIControlEventValueChanged],
[bottomStepper rac_signalForControlEvents:UIControlEventValueChanged],
[rightStepper rac_signalForControlEvents:UIControlEventValueChanged]
] reduce:^(UIStepper *top, UIStepper *left, UIStepper *bottom, UIStepper *right) {
return [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(top.value, left.value, bottom.value, right.value)];
}];
但是,这绝不会导致信号被处理。
如果我只包含一个信号,像这样:
RAC(self.insets) = [RACSignal combineLatest:@[
[topStepper rac_signalForControlEvents:UIControlEventValueChanged]]
reduce:^(UIStepper *top) {
return [NSValue valueWithUIEdgeInsets:UIEdgeInsetsMake(top.value, 0.0,0.0,0.0)];
}];
它按预期工作(观察任何其他步进器单独工作也很好)但对于多个控件,我什么也得不到。我可以通过将每个控件视为一个单独的信号来解决问题,但这似乎错过了combineLatest 方法的要点。我做错了什么,还是我应该在 RAC 项目上提出问题?
【问题讨论】:
标签: ios reactive-cocoa