iOS刷卡删除单元突然恢复正常状态

时间:2015-01-14 04:20:04

标签: ios objective-c uitableview swipe

我正在尝试滑动以删除手势。

有时在轻扫手势后,手机会以强制方式恢复正常状态。 进入编辑模式并点击 - 按钮也会出现。

它是随机发生的。

当用户点击编辑按钮时,始终会调用此方法:

- (IBAction)editButtonTapped:(UIBarButtonItem *)sender {
    [self.tableView setEditing:!self.tableView.editing animated:YES];
}

canEditRowAtIndexPath方法始终返回YES。这是我的commitEditingStyle方法:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSManagedObjectContext *context = [self managedObjectContext];

    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete object from database
        [context deleteObject:[self.alarmsMutableArray objectAtIndex:indexPath.row]];

        NSError *error = nil;
        if (![context save:&error]) {
            NSLog(@"Can't Delete! %@ %@", error, [error localizedDescription]);
            return;
        }

        // Remove object from table view
        [self.alarmsMutableArray removeObjectAtIndex:indexPath.row];
        [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
    }
}

1 个答案:

答案 0 :(得分:-1)

您需要在模型中以及在更新块中的tableView中嵌套项目的删除 所以在最后两行代码出现之前......

[self.tableView beginUpdates];

然后在最后放..

[self.tableView endUpdates];

...... 请注意,在最后两行之间,你的模型与你的tableView不同步(你从数组中删除了一个对象,但还没有删除一个单元格......)你应该只处于这个位置之间[ beginUpdates]和[endUpdates]或您的应用可能会崩溃。