关于Tableview 方法insertRowsAtIndexPaths 报错问题

原创 2015年11月20日 16:59:16

最近项目中需要使用 Tableview的多级展开效果  折腾了几天终于实现了,通过 insertRowsAtIndexPaths 和 delecRowsAtIndexPaths 方法 但是还没高兴起来另一个坑就有出现在了,在当前页展开Ok 但是点击cell跳转界面 在返回时,再点击折合的cell时就会立马的crash掉,

并抛出Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of sections.  The number of sections contained in the table view after the update (8) must be equal to the number of sections contained in the table view before the update (4), plus or minus the number of sections inserted or deleted (0 inserted, 0 deleted).'

这样的问题  然后就开始度娘各种的查找原因,

最后锁定到,是因为tableview在执行insertRowsAtIndexPaths 和 delecRowsAtIndexPaths 动画时,控制器跳出在返回,会导致tableview再次走load方法,使当前numberOfRow显示的数据与之前的数据地址方法变化,这时在进行insert 和delec时 xcode的消息转发机制就会抛出异常

解决方法有几种 :

        第一种: 在你进行插入和删除的时候添加此方法      

            [tableView beginUpdates];

            [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];

            [tableView endUpdates];


         第二种:在viewdidload方法中调用你的填充数据的方法,这样tableview只会进行一次load  防止界面跳转返回后cell的地址放生变化导致的crash

此方法已验证,若有更好的方法请留言!

insertRowsAtIndexPaths 和 deleteRowsAtIndexPaths 的使用

效果图: 1.插入成功: 2.删除成功: 3.主要记录下思路: 3.1>首先理清tableView的数据源方法和代理方法的调用周期 numberOfSectionsInT...
  • Mayerlucky
  • Mayerlucky
  • 2015年02月12日 10:03
  • 4891

iOS调试——关于insertRowsAtIndexPaths方法崩溃以及动画实效的处理办法

关于insertRowsAtIndexPaths方法崩溃以及动画实效的处理办法
  • u012411480
  • u012411480
  • 2017年10月11日 16:05
  • 284

insertRowsAtIndexPaths errors

问题描述: 当向UITableView 插入cell 时,报错 : Assertion failure in -[UITableView _endCellAnimationsWithContext:]...
  • jiajiayouba
  • jiajiayouba
  • 2015年11月30日 16:43
  • 1647

ios的tableView使用详解

一、初始化方法 - (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style;   这个方法初始化表视...
  • qqqqzxg
  • qqqqzxg
  • 2016年09月09日 13:36
  • 5145

ios 系统 自带动画效果使用

1.保证程序UI和设计图完全吻合(UI显示) 2.尽量能避免闪出闪去等操作,结合实际情况,能过渡的交互尽量结合动画制作,以符合ios风格,(Animation) (一).UI显示: 原则:保证要...
  • s0228g0228
  • s0228g0228
  • 2015年01月14日 10:47
  • 2040

ios 关于tableview的复用问题,避免假复用

自从开始做ios开发,自己开发了很多客户端,也看到很多别人写的程序,发现很多人在做程序的时候走入了很多误区,比如tableview的复用,tableview的复用是为了解决大量数据的内存管理问题,优化...
  • changcongcong_ios
  • changcongcong_ios
  • 2016年11月30日 11:38
  • 7858

iOS 中碰到tableview组合下拉刷新崩溃

在项目中碰到下拉刷新导致系统崩溃的情况。经过调试发现。代码并没有走过reloaddata时 但是形同崩溃了(tableview在初始化中并没有绑定数据 ,所以都是通过reloaddata方法去申请ta...
  • gczlz
  • gczlz
  • 2016年08月22日 23:08
  • 1345

iOS之Tableview重用出现的错乱三种解决方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPa...
  • u011146511
  • u011146511
  • 2017年07月06日 08:33
  • 737

iOS-分组UITableView删除崩溃问题(当删除section中最后一条数据崩溃的情况)

错误: The number of sections contained in the table view after the update (1) must be equal to the num...
  • Dancer2015
  • Dancer2015
  • 2016年01月22日 19:39
  • 4195

[经验]tableview的contentSize默默自己在变。

项目中遇到一个诡异的问题:tableview的contentSize在滚动的时候自动在变小。这里先说一下项目环境:UIViewController有个tableview,可以通过上拉加载,实现加载更多...
  • hherima
  • hherima
  • 2017年05月15日 19:02
  • 1237
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Tableview 方法insertRowsAtIndexPaths 报错问题
举报原因:
原因补充:

(最多只允许输入30个字)