【发布时间】:2014-08-01 02:35:17
【问题描述】:
我有一个包含多个部分的表格。当给定部分没有行时,我从numerOfRowInSection 返回 1,然后创建一些默认文本。我不允许选择或编辑此行。
问题在于,此部分确实允许在有数据时删除行(我再次在没有数据时禁用此功能并且我正在显示我的默认文本)。但是,假设本节中有一行实际数据。当用户删除此行时,它应该重新加载表格并显示我的默认文本,因为此部分不再存在数据。实际发生的是应用程序终止错误,因为在删除之后它需要 0 行(1 行之前,1 行删除,0 行结果)。在我的代码中,虽然当 rows 为 0 时,我返回 1,所以数学不起作用并且错误会关闭所有内容。
问题:如何在表格为空但允许删除时保留默认行,以便在删除最后一行数据时允许我的 1 个默认文本而不是预期的没有行?
删除代码:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete)
{
[self deleteFav:indexPath.row];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
处理行数和默认值的代码:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (section == 0) return [self.channelIDArray count];
else if (section == 1)
if ([self.favChannelIDArray count]>0) return [self.favChannelIDArray count];
else return 1;
}
错误:
2014-07-31 19:47:19.194 ephIM[3183:60b] * 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效更新:第 1 节中的行数无效. 更新后现有节中包含的行数 (1) 必须等于更新前该节中包含的行数 (1),加上或减去从该节中插入或删除的行数 (0已插入,1 已删除)并加上或减去移入或移出该部分的行数(0 移入,0 移出)。'
【问题讨论】:
-
显示处理删除的代码。
-
另外,请出示您的错误日志。
-
我将两者都添加到我的 OP 中。谢谢。
标签: objective-c uitableview ios7