iOS开发常用知识点

RAC踩坑之cell重复调用

2019-03-13  本文已影响0人  贼海鸥

在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;
}];
上一篇 下一篇

猜你喜欢

热点阅读