将行添加到UITableView - NSInternalInconsistency错误

时间:2014-02-07 19:37:14

标签: ios objective-c uitableview

好的,我知道有很多关于此的帖子 - 这就是我构建我的解决方案的方式......但我似乎无法让这个工作。

这个想法是当用户触摸我的UITableView中的“主题”行时(第1节第0行)我希望它展开以显示我们手边的所有5个主题...这是我现在的解决方案:

if(indexPath.section == 1 && indexPath.row == 0){
    [[_dataArray objectAtIndex:1] setObject:@[@"Theme", @"Cool Blue", @"Clean Black", @"Lime Green", @"Deep Orange", @"Dark Red"] forKey:@"data"];

    NSMutableArray *indexPaths = [NSMutableArray array];

    for (int i = 0; i < 6; i++) {
        [indexPaths addObject:[NSIndexPath indexPathForRow:indexPath.row+i inSection:indexPath.section]];
    }

    NSLog(@"The paths are %@", indexPaths);

    [_menuTable beginUpdates];
    [_menuTable insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft];
    [_menuTable endUpdates];
}

这是我得到的错误:

  

* 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第1节中的无效行数。更新后现有部分中包含的行数(6)必须等于更新前的该部分中包含的行数(1),加上或减去从该部分插入或删除的行数(插入6个,删除0个),加上或减去移入的行数或者超出该部分(0移入,0移出)。'

有关为何发生这种情况的任何想法?我已经设置了所有代表,我(我认为)在这里使用正确的逻辑....

由于

1 个答案:

答案 0 :(得分:1)

该错误告诉您,在更新开始时,您有一个单元格。在更新结束时,您有7个单元格(1 + 6您添加)。但是当它调用你的numberOfRowsInSection函数时,你会在动画后返回6。所以存在不一致。它不知道你想要什么,所以它会崩溃。

确保您没有将初始单元格添加到表格中,即使它已经在桌面上。