在tableView的cellForRowAtIndexPath代理方法中,如果有使用到ReactiveCocoa中的rac_signalForControlEvents方法
如何直接这样调用:
[[cell.textField rac_signalForControlEvents:UIControlEventEditingDidEnd] subscribeNext:^(__kindof UITextField * _Nullable x) {
}];
会导致事件被触发多次,因为cell是重用的.
正确的做法是:
[[[cell.textField rac_signalForControlEvents:UIControlEventEditingDidEnd] takeUntil:cell.rac_prepareForReuseSignal] subscribeNext:^(__kindof UITextField * _Nullable x) {
}];
takeUntil: someSignal 只要someSignal发送完成(sendCompleted)或者发送任意数据(sendNext),就不能在接收源信号的内容(subscribeNext block就不会再调用了)
这样就可以避免事件多次调用了.