博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UITableView beginUpdate和endUpdate使用的前提
阅读量:5295 次
发布时间:2019-06-14

本文共 1192 字,大约阅读时间需要 3 分钟。

转载地址:

UITableView有两个方法,用于单元格动画变化的方法,beginUpdate,endUpdate,这两个方法使用时需要注意。如果使用不当,会造成crash

在了解使用注意事项之前,我们先看官方文档的描述。

Call this method if you want subsequent insertions, deletion, and

selection operations (for example, cellForRowAtIndexPath: and
indexPathsForVisibleRows) to be animated simultaneously. You can also
use this method followed by the endUpdates method to animate the
change in the row heights without reloading the cell. This group of
methods must conclude with an invocation of endUpdates. These method
pairs can be nested. If you do not make the insertion, deletion, and
selection calls inside this block, table attributes such as row count
might become invalid. You should not call reloadData within the group;
if you call this method within the group, you must perform any
animations yourself.

从描述中,可以了解到以下几点

1. 这个方法用于在调用插入,删除,选择方法时,同时有动画效果。
2. 用endUpdate能动画改变行高,而无需relaod这个cell。
3. beginUpdate和endUpdate成对使用,其包含的block里面,如果没有插入删除,选择的方法被使用。有可能导致这个table view的一些属性失效,例如行的数量。
4. 不应该在这个block范围里调用 reloadData,或者reloadRowsAtIndexPaths。一旦使用,必须自己执行和管理自己的动画效果。

第三点和第四点比较重要。也是导致闪退的原因。reloadData会引起,获取单元格高度,以及cell的重新加载。这会导致一些动画对应的行号产生变化。从而闪退。

转载于:https://www.cnblogs.com/AbeDay/p/5026892.html

你可能感兴趣的文章
正则表达式
查看>>
开源网络漏洞扫描软件
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
创新课程管理系统数据库设计心得
查看>>
Hallo wolrd!
查看>>
16下学期进度条2
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
Chapter 3 Phenomenon——12
查看>>
C语言中求最大最小值的库函数
查看>>
js学习(精华帖)
查看>>
和小哥哥一起刷洛谷(1)
查看>>
jquery对id中含有特殊字符的转义处理
查看>>
获取元素样式信息于三中获取方式的区别
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
chrome(谷歌浏览器)“无法从该网站添加应用、扩展程序和用户脚本”问题
查看>>
HTTP协议 (四) 缓存
查看>>
python学习之random
查看>>
使用onclick跳转到其他页面/跳转到指定url
查看>>
【转载】测试计划模板
查看>>