一、发现问题
前几天做项目的时候遇到了一个问题困扰我好久,问题是这样的:下图中cell上有一个button(空的星星),我想实现的效果是点击把空心的星星变成实心的星星,再点就换回来,就是视觉上的收藏、取消收藏效果。而获取的数据没有标志这一项的,需要自己做。刚开始感觉很简单无非就是点击换个图片,用个BOOL值来判断就可以了,但是后来发现完全不是这么回事,由于button是在cell上,而cell是相同的而且是重用的,这样就有好多问题:
(1)在点击任意一个button的时候都会走同一个点击方法,造成点击换图时发生错乱;
(2)点击某一个button变成黑色实心星星,往上滑的时候发现下别有的button的图片也换了(由cell的重用机制造成);
(3)下拉刷新的时候以前button换实心图片的也就又换回空心的了。
二、解决问题
后来经过思考,认识到cell只是展示数据的载体,数据是不断的变化的,也