最近在做一个关于问卷调查的功能,遇到了一个比较棘手的问题,就是我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.这样的几步就可以了.
网友评论