<nsinternalinconsistencyexception>无效更新:无效的节数</nsinternalinconsistencyexception>

时间:2012-01-14 11:04:37

标签: xcode tableview

我通过模态视图控制器在UItableView中添加用户定义的文本。 该表创建为NSMutableArray。在模态视图中输入数据并点击完成按钮时无效更新:无效的部分数。生成错误。 我必须在用户输入数据但不确定如何操作时更新数组。我附上了相关的代码。谢谢你的建议。

//Number of sections
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } 
//Number of rows
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return  [listOfConjProcedures count];
}

//Loading the cells
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

    // Configure the cell.

    cell.textLabel.text = [listOfConjProcedures objectAtIndex:indexPath.row];

    return cell;
}

//Done button Delegate for the modal view
- (void)itemDetailViewController:(ItemDetailViewController *)controller didFinishAddingItem:(ChecklistItem *)item
{
    int newRowIndex = [listOfConjProcedures indexOfObject:item];
    [listOfConjProcedures addObject:item];

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:newRowIndex inSection:0];
    NSArray *indexPaths = [NSArray arrayWithObject:indexPath];
    [self.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationAutomatic];
    [self dismissViewControllerAnimated:YES completion:nil];

}

1 个答案:

答案 0 :(得分:1)

我认为你的问题可能在这里:

int newRowIndex = [listOfConjProcedures indexOfObject:item];

除非你已经将它添加到数组中,否则它不会有索引,但是在下一行中你将它添加到数组中,所以它没有意义。

我认为你在索引路径0,NSNotFound中添加一行会混淆表视图。使用数组的计数作为行索引,或者在表的开始(0,0)处插入新行(并在数组的索引0处)。