2015-07-22 3 views
0

У меня есть проект, над которым я работаю. Код, который дал мне проблемы, работал вчера, и я не внес никаких изменений в эту часть кода, поскольку, когда я пытался запустить его сегодня, он не работал.Xcode commitEditingStyle UITableViewCellEditingStyleDelete не работает

Проблема в том, что когда я пробираюсь по ячейке, чтобы ее удалить, она не обнаружена и метод 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]; 
    } 
} 

ответ

0

я узнал, что было не так! У меня был другой метод в viewController, о котором я не знал.

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

Исправлено, установив возвращаемое значение в UITableViewCellEditingStyleDelete.

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

Он все еще не работает, проблема в том, что метод commitEditingStyle никогда не вызывается, когда пользователь щелкает прямо в ячейке. – Ben

Смежные вопросы