如何删除tableView单元格iOS

时间:2016-07-07 05:45:03

标签: ios objective-c uitableview

我是Objective-C的新手。所以我在一节(5个单元格)中有一个包含5行的表格视图,我希望允许用户删除它们,但是当我点击删除按钮时应用程序会一直崩溃。它崩溃的原因是因为我在该部分中有5行而不是返回[self.myListItems count]如何在保留该部分中的5行的同时更正下面的代码?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source


        [self.myListItems removeObjectAtIndex:indexPath.row];
        [self saveList];

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

错误是:断言失败 - [UITableView _endCellAnimationsWithContext:]

3 个答案:

答案 0 :(得分:5)

在ViewDidLoad中:

self.tableView.allowsMultipleSelectionDuringEditing = NO;

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    // Return YES if you want the specified item to be editable.
    return YES;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //add code here for when you hit delete
        [self.myListItems removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
        [self saveList];
    }    
}

请记住 - 如果要删除作为节中最后一项的行,则需要删除整个节(否则可能会导致节数错误并抛出此异常)。

希望这有帮助。

答案 1 :(得分:0)

尝试使用这些:

StringBuilder outString = new StringBuilder(str);
for(int i = 0; i<outString.length(); i++){
    if(Character.isUpperCase(outString.charAt(i))){
        outString.deleteCharAt(i);
    }
}
return outString.toString();

答案 2 :(得分:0)

更改以下行

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
 if (editingStyle == UITableViewCellEditingStyleDelete) {
 // Delete the row from the data source
 [tableView beginUpdates]
 [self.myListItems removeObjectAtIndex:indexPath.row];
 [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
 [tableView endUpdate];
 [self saveList];
}