我正在尝试使用ReactiveCocoa将UISwitch的on状态绑定到我的模型中的布尔属性。我从以下几点开始:
RACChannelTo(self.switch, on, @NO) = RACChannelTo(self.model, toggle, @NO);这就是我将其他视图绑定到我的模型的其他部分的方式,不幸的是,它似乎对UISwitch没有任何作用。模型的状态不会影响交换机,反之亦然。
所以我试着:
RACChannelTo(self.model, toggle, @NO) = [self.switch rac_newOnChannel];这看起来工作正常,但我必须事先手动设置开关的状态。所以,现在我有:
self.switch.on = self.model.toggle;
RACChannelTo(self.model, toggle, @NO) = [self.switch rac_newOnChannel];同样,这是可行的,但与将ReactiveCocoa与其他控件一起使用相比,它似乎非常不优雅。
有没有更好的方法来做这件事?
发布于 2014-03-07 23:49:56
您使用-rac_newOnChannel而不是到交换机的on的通道是正确的。这是因为不能保证以符合KVO的方式修改on。使用通道挂钩到交换机的UIControlEventValueChanged事件。
要获得类似如下的行为:
RACChannelTo(self.switch, on, @NO) = RACChannelTo(self.model, toggle, @NO);在开关以模型中的值开始的位置,您可以手动进行通道挂钩:
RACChannelTerminal *switchTerminal = [self.switch rac_newOnChannel];
RACChannelTerminal *modelTerminal = RACChannelTo(self.model, toggle, @NO);
[modelTerminal subscribe:switchTerminal];
[[switchTerminal skip:1] subscribe:modelTerminal];https://stackoverflow.com/questions/22237326
复制相似问题