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

时间:2014-11-14 04:51:22

标签: ios objective-c xcode uitableview

我试图创建从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];

}

2 个答案:

答案 0 :(得分:2)

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将负责更新表格视图中的相关行。

答案 1 :(得分:1)

它可能对你有帮助我知道它与另一个答案相同但它是我自己的答案: -

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