我有tableView
个多个部分。当一个部分只包含一行时,如果我尝试删除该行,我的应用程序在执行此代码时崩溃:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
我得到了这个例外:
*** Terminating app due to uncaught exception 'NSRangeException',
reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)'
每个部分都有一个数组。这些数组中的每一个都包含要以行显示的对象。然后是另一个包含这些数组的数组。
知道我做错了什么吗? 谢谢。
编辑
好的,我刚刚在调试器中看到它是崩溃的tableView: titleForHeaderInSection
方法,因为我在刚刚删除的数组中得到了节的标题。所以我试图访问一个带有0对象的数组在它...
答案 0 :(得分:0)
最简单的解释是indexPath
为nil,导致将空数组传递给delete方法。
记录indexPath的值以进行确认。
答案 1 :(得分:0)
表视图有一个源,源包含要显示的部分和行的列表。当您执行[tableView deleteRowsAtIndexPaths:withRowAnimation:]
调用时,表视图会更新表,但源现在不同步(它具有您刚刚删除的行)。解决方案是在更新表视图本身之前更新源(即数组或核心数据或其他)。
答案 2 :(得分:0)
如果部分中只有一行,则应删除该部分。以下是删除部分的代码。
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationTop];