美文网首页
cell中处理多个button点击cell重用后button点击

cell中处理多个button点击cell重用后button点击

作者: 夜空已沉寂 | 来源:发表于2017-01-18 15:54 被阅读431次

最近在做一个关于问卷调查的功能,遇到了一个比较棘手的问题,就是我cell中有一个button点击button进行选择,然后改变button的颜色,但是cell上啦消失重用,回来之后原来的点击改变,又恢复到默认,这一度让我很恼火,后来这个问题终于解决了.于是写下这个文章,以此来总结下,以后可能还会遇到同样的问题.

1.图解说下问题吧

这个是效果,当我点击一个button变成如下图片 变成这样,但是往上拉取cell,cell消失,这个点击效果又恢复到原来的默认效果

针对这个问题,总结了一下几点:

1.首先,在model里面定义一个属性,用来存储点击的button的tag值.再定义一个布尔值,用来判断button的点击事件

@property(nonatomic)BOOL   isSelect;

@property(nonatomic)NSInteger tag;

2.cell中自定义一个block,用来传输你点击的button的tag值

@property(nonatomic,strong)void(^clickButtonAction)(NSInteger  tagg);

3.在button的点击事件中实现这个block方法.

button的点击效果中实现block方法

4.控制器内cell创建进行button的tag值和model相关联,如下图:

这个要先赋值,然后传模型,顺序不能够颠倒

5.回到cell的set方法里面,也就是model赋值.

在这之前,你要把你创建的button放到一个数组里面,并给他们赋予不同的tag值,因为这需要在set方法里面来判断你点击了哪一个button

遍历这个button数组,判断点击那个button,然后让model的那个布尔值等于button的selected这样就好了

cell中button的创建,用for语句就可以了

button设置图片,一个是默认的一个是点击也就是selected的.

好了,这样之后你再怎么弄就不会再消失了,希望有遇到这样问题的朋友能够对你们有所帮助.

如果只有一个button的话,那就只需要一个布尔值就可以了,点击cell让这个cell给这个button进行赋值就可以了,只需要在set方法里面让button.selected = model.selected就可以了,也不需要button的点击事件,然后在控制器里面,让model.selected = !model.selected.这样的几步就可以了.

相关文章

网友评论

      本文标题:cell中处理多个button点击cell重用后button点击

      本文链接:https://www.haomeiwen.com/subject/hzfbbttx.html