2012-03-14 2 views
2

Иногда я получаю эту ошибку при попытке delelte строки из UITableView:ошибка сбоя Assertion при попытке удаления строки из UITableView

провала утверждения - [UITableView _endCellAnimationsWithContext:]

и в других случаях он удаляет строку без проблем.

Вот мой код:

- (void) tableView:(UITableView *)tableView 
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
    [[self displayedObjects] removeObjectAtIndex:[indexPath row]]; 


    // Animate deletion 
    NSArray *indexPaths = [NSArray arrayWithObject:indexPath]; 
    [[self tableView] deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; 

    } 
} 
+1

Просьба дать более подробную информацию об ошибке – Krrish

ответ

4

Похоже на numberOfRowsInSection возвращает неправильный Integer иногда при входе в режим редактирования.

+1

ДА, точно. Объект будет удален из массива, но затем перед удалением строки numberOfRowsInSection вызывается снова, после чего снова загружается массив с диска и присваивается номер перед удалением из-за проблема в моей загрузке массива. Я поставил точку останова на numberOfRowsInSection, и теперь все ясно. Огромное спасибо. – Ali

1

Не уверен .. но попробовать это (работал для меня один раз)

Первый Animate удаление UITableView, а затем удалить объект из массива.

if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
    // Animate deletion 
    NSArray *indexPaths = [NSArray arrayWithObject:indexPath]; 
    [[self tableView] deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; 

    [[self displayedObjects] removeObjectAtIndex:[indexPath row]]; 

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