3

可能重复:
将 Table 更改为 Edit 模式并删除普通 ViewController 中的 Rows

我想从 tableView 中删除选定的行。我想为用户提供功能,以便当他在行上滑动或轻弹手指时删除该行。我知道编辑风格,它提供了一个带有 -ve 标志的圆形红色按钮。

我试过这段代码:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{


[tableView beginUpdates];    
if (editingStyle == UITableViewCellEditingStyleDelete) {
    // Do whatever data deletion you need to do...
    // Delete the row from the data source
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop];      
}       
[tableView endUpdates];
[tableView reloadData];
}

我得到了删除按钮,但是当我单击它时,SIGABRT 错误就在那里。

4

5 回答 5

17

试试下面的几行:

[bookmarks removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationFade];

书签是我在表格视图单元格上加载的数组名称,你应该用你的数组名称代替它。

于 2013-01-07T06:39:26.267 回答
3

删除表行后,从您的数据源中删除相应的索引数据源到表中。然后再次重新加载表。

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
 [dataArray removeObjectAtIndex:indexPath.row];
  [tableView reloadData];
于 2013-01-07T07:04:50.570 回答
3

只需替换代码

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle==UITableViewCellEditingStyleDelete)
    { 
        [dataArray removeObjectAtIndex:indexPath.row];
    }


    [tableView reloadData];
}
于 2013-01-07T07:07:52.450 回答
0

尝试这个

 [tableArray removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
于 2013-01-07T06:42:42.890 回答
0

必须尝试这个......

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:YES]; 
于 2013-01-07T06:45:09.063 回答