我有一个自定义单元格,我正在添加一个段控件。
-(void)segmentclicked:(id)sender{
UISegmentedControl *segmentC = (UISegmentedControl *)sender;
CustomCell *cell=(CustomCell *)segmentC.superview.superview;
NSIndexPath *indexPath = [self.table indexPathForCell:cell];
NSMutableArray *discardarr = [NSMutableArray array];
[discardarr addObject:[self.entries objectAtIndex:indexPath.row]];
[self.table beginUpdates];
[self.itemsArray removeObjectsInArray:discardarr ];
[self.table deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:NO];
self.entries = [NSArray arrayWithArray:self.itemsArray];
[self.table endUpdates];
[self.table reloadData];
}
}
我收到以下错误;
'NSInternalInconsistencyException',原因:'无效更新:第0节中的行数无效。更新后的现有部分中包含的行数(10)必须等于该部分中包含的行数。更新(10),加上或减去从该部分插入或删除的行数(插入0,删除1),加上或减去移入或移出该部分的行数(0移入,0移出)。 “
* 第一次抛出调用堆栈:
1。)我怎么能摆脱这个,我相信我已经做了一切相应的事情。我甚至尝试在[self.table reloadData];
之上添加行[self.table endUpdates];
,但仍然没有任何变化。帮助
答案 0 :(得分:2)
通过此行[self.table deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:NO];
你的tableview再次检查数据源以查看行中的节数和节中的行数。 该错误是因为检查已删除的元素仍然作为数据源元素存在,tableview应该显示但是您已经调用了删除该行。
例如。
在我的行数中,我返回7。
但如果我删除一行,我必须让它返回6 ..但你仍然可能是7 ..
(通常返回的是[数组计数]我刚才使用return 7作为例子)