线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x14)

我试图创build从tableview删除行的能力,这就是我做到了这一点。 错误来自于

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

任何帮助将非常感激。 谢谢!

 -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { [self.homeworkArray removeObjectAtIndex:indexPath.row]; [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } [self.tableView reloadData]; } 

arrayWithObjects:方法需要一个nil来终止列表,所以你需要说 –

 [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,nil] withRowAnimation:UITableViewRowAnimationFade]; } 

甚至更简单,使用arrayWithObject:

 [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; } 

或者@rmaddy指出,使用数组文字的语法 –

 [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } 

此外,您不需要reloadData调用 – deleteRowsAtIndexPaths将负责更新表视图中的相关行。

这可能是帮助完整的你,我知道它相同的另一个答案但这是我自己的答案: –

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