在不添加新行的情况下,是否无法从UITableView中删除多行?我认为有批量插入和删除的支持,但看起来您只能将表格大小调整为前一次计数中的1项。
当我尝试删除一大堆行而不添加任何新内容时,我收到错误:
无效更新:行数无效 在第2节中。行数 包含在现有部分中 更新后(3)必须等于 包含在其中的行数 更新前的部分(0),加或 减去插入的行数或 从该部分删除(1插入, 0已删除)。'
这就是我正在删除的方式:
// The section initially has 7 rows. I want to remove 5 of them.
// The underlying table store data has been cleared of the 5 rows
// content as of this point
int newRowCount = 5;
int aSection = 2;
// Create the index paths of the rows I want to delete
NSMutableArray *deletePaths = [NSMutableArray arrayWithCapacity:newRowCount];
for (int ix = 0; ix < newRowCount; ++ix)
{
[deletePaths addObject:[NSIndexPath indexPathForRow:ix inSection:aSection]];
}
// Start the updates
[aTableview beginUpdates];
if (deletePaths && [deletePaths count] > 0)
{
[aTableview deleteRowsAtIndexPaths:deletePaths
withRowAnimation:UITableViewRowAnimationNone];
}
[aTableview endUpdates];
我正在关注Apple的UITableView文档: link text
答案 0 :(得分:0)
有点猜测,因为我看不到代码的这一部分,但请确保
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section
正在返回正确的号码。听起来你正在删除一个部分中的行而没有这个方法返回新的行数。
答案 1 :(得分:0)
我刚刚在一小时前处理了同样的错误。除了删除行本身之外,还需要从数据数组中删除已删除的对象(假设您使用数据数组来存储表视图中显示的内容列表)。确保在调用deleteRowsAtIndexPaths 之前从数据数组中删除对象。调用该方法会导致调用numberOfRowsInSection;并且如前所述,您需要确保该方法没有返回与删除语句之前相同的行数。