UITableViewCell上的SIG_ABRT删除

时间:2011-03-25 07:59:30

标签: objective-c ios uitableview

我正在尝试使用Apple提供的“编辑” - > ( - ) - > “删除”功能可从我的UITableView中删除一行。

我在此处激活了按钮:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

这里创建的UITableViewCell:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    PositionCell *cell = (PositionCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[PositionCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    FSExAppDelegate *appDelegate = (FSExAppDelegate *)[[UIApplication sharedApplication] delegate];
    Position *pos = [appDelegate.positions objectAtIndex:indexPath.row];

    [cell setPosition:pos];

    // Configure the cell.

    return cell;
}

然后只是Apple提供的代码:

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source.
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    else if (editingStyle == UITableViewCellEditingStyleInsert) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view.
    }   
}

当我执行删除操作时,我陷入了:

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

“线程1:程序接收信号'SIGABRT'”。

我一直在拖网搜索这些问题,但似乎无法找到解决这个问题的任何内容。有人可以帮忙吗?

DJS。

2 个答案:

答案 0 :(得分:2)

我想你要离开了:

[mutableArrayAsDataSource removeObjectAtIndex:[indexPath row]];

这应该在deleteRowsAtIndexPaths调用之前发生。

答案 1 :(得分:0)

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

请将此更改为

[tableView deleteRowsAtIndexPaths:[urArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];