cell中处理多个button点击cell重用后button点击消失问题

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最近忙完项目比较闲,想写一篇博客来分享一些自学iOS的心得体会,希望对迷茫的你有所帮助。博主非科班出身,一些...
    GitHubPorter阅读 1,452评论 9 5
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,732评论 1 9
  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,373评论 0 1
  • 前几天,我们在市图书馆的一个文化讲坛,现场聆听了王刚老师的声乐讲座,他带领我们共同领略声乐艺术之美,浅谈声乐演唱的...
    林泉雲霞阅读 531评论 0 1
  • 导语 花鸟画讲求情趣,不管是文人雅士的闲情逸趣,还是乡村淳朴的野逸之趣,寓兴抒情都是花鸟画非常重要的功能。自古花鸟...
    骆驼计划艺术阅读 2,941评论 1 2