从tableview中删除单元格 - 错误 - 提供的代码

时间:2012-02-06 16:37:36

标签: iphone objective-c cocoa-touch

我有一个自定义单元格,我正在添加一个段控件。

-(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];,但仍然没有任何变化。帮助

1 个答案:

答案 0 :(得分:2)

通过此行[self.table deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:NO];

删除代码中的行

你的tableview再次检查数据源以查看行中的节数和节中的行数。 该错误是因为检查已删除的元素仍然作为数据源元素存在,tableview应该显示但是您已经调用了删除该行。

例如。

在我的行数中,我返回7。

但如果我删除一行,我必须让它返回6 ..但你仍然可能是7 ..

(通常返回的是[数组计数]我刚才使用return 7作为例子)

相关问题