2010-06-14 74 views
1

我有一个tableView与多个部分。当部分仅包含一个行,如果我尝试删除该行,我的应用程序崩溃时执行此代码:UITableView与多个部分:部分与1行,删除行崩溃应用程序

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 

我得到这个异常:

*** Terminating app due to uncaught exception 'NSRangeException', 
reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)' 

有一个数组,每个部分。这些数组中的每一个都包含要在行中显示的对象。然后是另一个包含这些数组的数组。

任何想法我做错了什么? 谢谢。

编辑:

OK,我在它的tableView: titleForHeaderInSection方法这是崩溃调试刚才看到的,因为我得到了部分的标题我刚刚删除的阵列中。所以我试图访问一个有0个对象的数组...

回答

0

表视图有一个源,源包含显示的部分和行的列表。当您执行[tableView deleteRowsAtIndexPaths:withRowAnimation:]调用时,表格视图会更新表格,但源代码现在不同步(它具有刚刚删除的行)。解决方案是在更新表视图本身之前更新源(即数组或核心数据或其他)。

0

最简单的解释是indexPath是零,它导致一个空数组传递给delete方法。

记录indexPath的值以确认。

+0

对于:\t \t 的printf( “部分:%d,行:%d \ n” 个,indexPath.section,indexPath.row); 这里是日志: 部分:1,行:0 因此,没有indexPath不是零... – leochab 2010-06-15 06:42:40

+0

可能不得不到别的地方看看代码即可。我没有看到你现在发布的内容存在问题。 – TechZen 2010-06-15 20:02:27

0

当你只有一行的部分,你应该删除该部分。这里是下面的代码删除部分。 [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationTop];

相关问题