UITableView删除行在iOS中崩溃

时间:2013-06-19 14:54:37

标签: ios cocoa-touch uitableview

我正在尝试从iOS中的UITableView删除行。

UITableView中,我显示位于文档目录中的文件列表。

我想从文档目录中删除文件。

以下是删除代码。

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(editingStyle == UITableViewCellEditingStyleDelete)
    {
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

        self.fileManager = [NSFileManager defaultManager];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        [self.fileManager removeItemAtPath:[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt",cell.textLabel.text]] error:NULL];


        [tableView reloadData];
    }
}

错误消息是

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0.  The number of rows contained in an existing section after the update (1) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'

然而,当我尝试删除时,它会崩溃。

请帮帮我。

2 个答案:

答案 0 :(得分:3)

您的方法numberOfRowsInSection未正确更新。每当添加或删除项目时,您都需要确保它返回的值发生变化。

通常最好将您正在使用的所有数据都输入NSMutableArray,然后在numberOfRowsInSection中,您可以使用return [arrayOfData count];之类的内容。

答案 1 :(得分:1)

它应该反映回返行数的方法。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//return array count
}

从数组中删除元素。 步骤:
1:来自数组的搜索元素索引
2:用户removeObjectAtIndex方法将其删除。