在tableView中自定义的cell中,有一个按钮,按钮有一个点击方法clickBtn:,我们在控制器中调用这个点击方法。
[[cell rac_signalForSelector:@selector(clickBtn:)] subscribeNext:^(RACTuple * _Nullable x) {
UIButton *btn = [[x allObjects] lastObject];
btn.selected = !btn.isSelected;
}];
然而,点击按钮,发现按钮没有什么变化,打断点之后发现,block中的代码走了两遍,导致结果不变。经过查资料,发现是cell的重用机制导致的。修改之后的代码
[[[cell rac_signalForSelector:@selector(clickBtn:)] takeUntil:cell.rac_prepareForReuseSignal] subscribeNext:^(RACTuple * _Nullable x) {
UIButton *btn = [[x allObjects] lastObject];
btn.selected = !btn.isSelected;
}];