如何从UITableView中删除所选行?

时间:2013-01-07 06:36:06

标签: iphone ios uitableview ios4

  

可能重复:
  change Table to Edit mode and delete Rows inside a normal ViewController

我想从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 个答案:

答案 0 :(得分:17)

尝试以下几行:

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

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

答案 1 :(得分:3)

删除表格行后,将相应的索引dataSource从dataSource删除到table。然后再次重新加载表。

    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
 [dataArray removeObjectAtIndex:indexPath.row];
  [tableView reloadData];

答案 2 :(得分:0)

试试这个

 [tableArray removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

答案 3 :(得分:0)

必须尝试这个....

[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:YES];