tableview插入删除,方法调用顺序

3.主要记录下思路:
3.1>首先理清tableView的数据源方法和代理方法的调用周期
numberOfSectionsInTableView
numberOfRowsInSection
heightForRowAtIndexPath
3.1.1)以上三个方法,系统默认首先按顺序调用两遍以作准备。然后系统就会调用具体的cell的方法:
cellForRowAtIndexPath
更为重要的是:以上三个方法,可以归结为只要有cell的变化(无论新增或删除)都会调用。
3.1.2)系统每调用一次“cellForRowAtIndexPath”方法必会再调用一次“heightForRowAtIndexPath”方法。
3.1.3)“”方法可归结为只要有cell的新增才会调用。没有新增(即删除不会调用)。
3.2>所以“insertRowsAtIndexPaths”方法比如插入两个路径时,只会重新调用“cellForRowAtIndexPath”方法两次,路径为新增加的这两个路径(“indexPath.row”不再是从0开始)
3.2.1)“insertRowsAtIndexPaths”方法时需要注意的问题:插入路径的同时,要同步插入数据,以保证插入后的数据总量正确(比如原来数据为2个,插入两条路径,然后数据也要插入两条,以达到4个数据总量)
3.2.2)“deleteRowsAtIndexPaths”方法时需要注意的问题(删除多个路径时):同样删除路径的时候,要同步删除数据。这个方法是一个一个删除数据的,当删除一个数据后,数据的索引会重新排列,需要特别注意。

4.插入可以看成是一个二级列表的展开。二级列表展开的另一种思路:
4.1>首先可以把第一级列表看成是tableView的多个组(sections)。然后用“viewForHeaderInSection”自定义第一级列表的cell,那么第二级列表就是点击每组所展现的具体rows。

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

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,203评论 30 471
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,251评论 1 23
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 1.1 谈一谈GCD和NSOperation的区别? 首先二者都是多线程相关的概念,当然在使用中也是根据不同情境进...
    John_LS阅读 1,328评论 0 12
  • 四月蔷薇开满园, 雪白金黄粉红色, 香气四溢又美丽, 引来蜜蜂工作忙。
    拈花一笑0317阅读 268评论 0 0