首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReactiveCocoa和UISwitch

ReactiveCocoa和UISwitch
EN

Stack Overflow用户
提问于 2014-02-03 16:58:53
回答 1查看 1.3K关注 0票数 1
代码语言:javascript
复制
//@property (weak, nonatomic) IBOutlet UIImageView *imageView;
//@property (nonatomic) UIImage *image;
//@property (nonatomic) PhotoEffect *effect;
//@property (weak, nonatomic) IBOutlet UISwitch *glossSwitch;

目前,我有一个问题,因为UISwitch不能与KVO一起工作。下面的代码仅在开关从初始状态更改时才触发:

代码语言:javascript
复制
RAC(self.imageView, image) = [[[[RACSignal

                                combineLatest:@[ RACObserve(self, image), [self.glossSwitch
                                                                                   rac_signalForControlEvents:UIControlEventValueChanged], RACObserve(self, effect)]]
                              deliverOn:[RACScheduler scheduler]]
                              reduceEach:^UIImage *(UIImage *im, UISwitch *glossSwitch, PhotoEffect *effect) {
                                  if (!im) {
                                      return nil;
                                  }
                                  if (effect) {
                                      im = [im imageWithEffect:effect.type];
                                  }

                                  if (glossSwitch.on) {
                                      im = [GlossyIcon applyShineToImage:im];
                                  }
                                  return im;
                              }]
                              deliverOn:RACScheduler.mainThreadScheduler];
EN

回答 1

Stack Overflow用户

发布于 2014-02-04 11:12:44

-combineLatest:从阵列中的每个信号中累积一个“下一”项,直到所有信号都发送了一个。此时,它最终发送一个包含数组中每个信号的"next“值的RACTuple

您的RACObserve信号在初始设置时分别发送一个"next“。当属性改变时,它们将在将来再次发送“next”。

根据控制事件,UISwitch将按照预期发送"next“。但由于RACObserve信号可能已停止发送“下一步”,它们会使您的UISwitch挂起,并且-combineLatest:不能发送超过第一个“下一步”的消息。所以你的-reduceEach:只会在第一次触发。

编辑:实际上,挂起-我刚刚重读了-combineLatest:的文档,它说一旦提供了第一组完整的“下一步”(对于每个信号),来自任何信号的任何额外的“下一步”应该会导致组合的信号传递一个包含每个信号的最新值的RACTuple。所以我不太确定发生了什么事,很抱歉没有回答!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21523145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档