Xcode commitEditingStyle UITableViewCellEditingStyleDelete不起作用

时间:2015-07-22 03:36:06

标签: ios xcode uitableview

我有一个我一直在做的项目。代码给我带来了问题昨天我没有对代码的那部分做任何改动,因为当我今天试图运行它时它没有用。

问题是,当我在单元格中滑动以删除它时,它未被检测到,并且commitEditingStyle方法永远不会运行。

我还做了另一个项目来测试commitEditingStyle方法,它运行正常。我还清理了项目(Product - > Clean)并重置了iOS模拟器。

我还能尝试什么?

这是我的代码,不要担心NSUserDefaults,这是用于在删除单元格后保存更改。

   -(BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES; }
    -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [self.taskObjects removeObjectAtIndex:indexPath.row];

        NSMutableArray *newTaskObjectsData = [[NSMutableArray alloc] init];
        for(Model *task in self.taskObjects)
        {
            [newTaskObjectsData addObject:[self taskObjectAsPropertyList:task]];
        }

        [[NSUserDefaults standardUserDefaults] setObject:newTaskObjectsData forKey:USER_KEY];
        [[NSUserDefaults standardUserDefaults] synchronize];

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

2 个答案:

答案 0 :(得分:0)

  

我希望它对你有帮助

if (editingStyle == UITableViewCellEditingStyleDelete) 
{
            [self.taskObjects removeObjectAtIndex:indexPath.row];

        NSMutableArray *newTaskObjectsData = [[NSMutableArray alloc] init];
        for(Model *task in self.taskObjects)
        {
            [newTaskObjectsData addObject:[self taskObjectAsPropertyList:task]];
        }

        [[NSUserDefaults standardUserDefaults] setObject:newTaskObjectsData forKey:USER_KEY];
        [[NSUserDefaults standardUserDefaults] synchronize];

        [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; // please set automatic animation 

    }
 // here you can reload your tableview
[self.tasksTableView reloadData];

答案 1 :(得分:0)

我发现了什么问题!我在viewController中有另一个方法,我不知道它在那里。

    -(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return UITableViewCellEditingStyleNone;
}

通过将返回值设置为UITableViewCellEditingStyleDelete来修复它。