加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift cell滑动数据丢失,图片重叠,cell重用问题的解决

发布时间:2020-12-14 07:19:42 所属栏目:百科 来源:网络整理
导读:公司的项目,需要做一个类似QQ空间动态展示的一个页面如下图(忽略UI :))~ 650) this.width=650;" src="http://img.jb51.cc/vcimg/static/loading.png" title="1.png" alt="wKioL1ap5A-yy3WzAAEWRX6kUvc257.png" src="http://s2.51cto.com/wyfs02/M00/7A/7A

公司的项目,需要做一个类似QQ空间动态展示的一个页面如下图(忽略UI :))~

wKioL1ap5A-yy3WzAAEWRX6kUvc257.png

上图可以看出一个Section分为三个row,

i_f01.gif

第一个row是头像、名字、时间。

i_f01.gif

第二个row是文字、图片。

i_f01.gif

第三行是点赞加评论按钮。

首先是cell重用问题,使得第二个row的图片重叠,如下图:

wKioL1ap5XKQngRsAAIt0wumJfs105.jpg

t_0001.gif

解决方法:(用Storyborad写布局的小伙伴,这里最好不要在这个cell中拖拽控件进去)

这个方法是通过删除重用的cell的所有子视图,从而得到一个没有特殊格式的cell,供其他cell重用。

Indetifiername = "blogCell"

var cell2:BlogCellTableViewCell? = tableView.dequeueReusableCellWithIdentifier(Indetifiername) as? BlogCellTableViewCell

var blogimage:UIImageView?

if cell2 == nil{

cell2 = BlogCellTableViewCell(style:UITableViewCellStyle.Default,reuseIdentifier:Indetifiername)

}

else{

//删除所有子视图

while(cell2?.contentView.subviews.last != nil){

cell2?.contentView.subviews.last?.removeFromSuperview()

}

}

//其他赋值代码


cell重用导致数据丢失

t_0026.gif

完成点赞效果,点击按钮点赞按钮时候,颜色改变,然后提示点赞成功如下图

wKioL1ap6ROin6X9AAHag5IDf88767.jpg


然后奇怪的是,上滑动或下滑动之后,颜色就会变回原来的颜色,但是数据已经提交到服务器,整个tableview reloadData之后会显示已经点赞。

解决方式

wKioL1ap6_XjCwTPAACIWCnWw8Y299.jpg

新建一个NSMutableSet(),用来存放你点赞的blog的id,点赞,存进去,取消点赞,删除(普通的数据丢失,在didSelecetRow里面存放indexPath就好了)反正存一个唯一的标记。

wKiom1ap7T6gcS5zAAGeG_HQE7A727.jpg

然后在加载cell的最后做一个判断,判断所有的blogid中哪些存起来,那么就显示点赞

wKiom1ap7TCg2Qq6AACntJ5nYA8406.jpg

困扰了3天的问题终于解决了~感谢一下帮助我的文章

t_0002.gif

http://www.2cto.com/kf/201304/204114.html

t_0002.gif

http://www.jianshu.com/p/c2a9c449d93f

如果有小白想看Swift自适应高度的cell和Label请点进我的博客列表,寻找“Swift 自适应cell与Label的高度”的这篇文章~谢谢大家关注!本人菜鸟,希望大家多多批评与指教~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读