在UITableView中添加无行时删除多行

时间:2010-10-14 17:46:48

标签: iphone uitableview

在不添加新行的情况下,是否无法从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

2 个答案:

答案 0 :(得分:0)

有点猜测,因为我看不到代码的这一部分,但请确保

- (NSInteger)tableView:(UITableView *)tableView
         numberOfRowsInSection:(NSInteger)section

正在返回正确的号码。听起来你正在删除一个部分中的行而没有这个方法返回新的行数。

答案 1 :(得分:0)

我刚刚在一小时前处理了同样的错误。除了删除行本身之外,还需要从数据数组中删除已删除的对象(假设您使用数据数组来存储表视图中显示的内容列表)。确保在调用deleteRowsAtIndexPaths 之前从数据数组中删除对象。调用该方法会导致调用numberOfRowsInSection;并且如前所述,您需要确保该方法没有返回与删除语句之前相同的行数。