RAC踩坑之cell重复调用

在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;
}];

你可能感兴趣的:(RAC踩坑之cell重复调用)