UITableView调用reloadData出现cell消失的问题解决方案

问题描述:

UITableView调用reloadData时候可能会出现cell布局消失的问题
一般的纯显示页面没有出现这样的问题,这个问题是出现在如下情形:
1、有多种cell样式且都继承自一个自定义的父cell
2、需要对cell进行编辑修改,修改之后为了让修改显示出来,所以调用了reloadData方法出现了有部分cell布局消失,查看了页面的图层发现cell变成了自定义的父cell样式,由于父cell没有做布局,所以看似是cell的布局消失了
3、断点调试了代理方法,对于cell的复用Identifier没有任何问题
这些看似是没有什么问题的,那么问题是出在哪里了呢?

问题分析:

现在来分析一下出现上述的问题:
由于出现了父cell样式,所以在代理方法里边应该是返回的父cell,正常来说通过cell的复用Identifier来获取cell是没有什么问题的,但是这里的问题可能就出在UITableView调用reloadData方法,这个方法是刷新所有样式,也称之为暴力刷新。说实话,一般情况,这个操作也都不会出现什么问题,但是这里可以从这方面下手来尝试解决。

解决方案:

分析了问题之后,大概确定了问题的所在位置,那么要解决就很容易了。
既然调用UITableViewreloadData刷新全部会出现该问题,那么换个方法刷新局部是不是就可以解决这个问题呢?我们来尝试一下。
替换UITableViewreloadData方法来刷新修改之后的单个cell如下:

[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

经过验证,该方法有效,可以解决以上问题。

很多时候,遇到问题可能会着急不知道该怎么办,
这时候静下心来好好想一想,多尝试,说不定解决方案就出来了。

最后,希望可以帮助到有需要的码友们。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容