关于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...

insertRowsAtIndexPaths errors

问题描述: 当向UITableView 插入cell 时,报错 : Assertion failure in -[UITableView _endCellAnimationsWithContext:]...

ios的tableView使用详解

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

关于UITableView的一个崩溃现象分析

*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit...

处理tableview的一些简单的局部刷新逻辑

tableview的局部刷新逻辑,通常是为了实现某一些或者一组效果,依赖于三个函数,reload,delete,insert。tableview的很多很炫的动画效果都是以此来实现,但是这几个函数,对c...
  • likendsl
  • likendsl
  • 2013年12月04日 17:50
  • 11968

IOS -- 调用deleteRowsAtIndexPaths:withRowAnimation:崩溃的问题

本文是集合了大神们的解答,仅用于自己的记载和查看运行[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] with...

关于UITableView 刷新遇到的坑:"Invalid update"

UITableview刷新遇到的坑:Invalid update.

uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of ro

uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of ro

一个奇葩错误:Invalid update: invalid number of rows in section 0

'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0.  T...

iOS调用reloadRowsAtIndexPaths Crash报异常NSInternalInconsistencyException

在更新 TableView 的时候调用[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath inde...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Tableview 方法insertRowsAtIndexPaths 报错问题
举报原因:
原因补充:

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