Ошибка удаления TableView - PullRequest
       3

Ошибка удаления TableView

0 голосов
/ 20 апреля 2011

Я получаю приведенную ниже ошибку из следующего кода:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [self.tableView reloadData];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
        [[FavouritesController sharedController] removeFavouriteAtIndex:indexPath.row];
        [self.tableView reloadData];
    }   
    else if (editingStyle == UITableViewCellEditingStyleNone) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}

Подскажите, пожалуйста, как это исправить?

*** Ошибка подтверждения в - [UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit/UIKit-1448.89/UITableView.m:995 2011-04-19 21: 30: 17.854 APPNAME [546: 707] *** Завершение работы приложения из-за невыполненного исключения «NSInternalInconsistencyException», причина:«Неверное обновление: недопустимое количество строк в разделе 0. Число строк, содержащихся в существующем разделе после обновления (4), должно быть равно количеству строк, содержащихся в этом разделе до обновления (4), плюс или минусколичество строк, вставленных или удаленных из этого раздела (0 вставлено, 1 удалено). '

Ответы [ 2 ]

0 голосов
/ 20 апреля 2011

Измените свою модель, прежде чем менять таблицу.

Так что попробуйте:

[[FavouritesController sharedController] removeFavouriteAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

Возможно, вам не понадобятся все эти перезагрузки, если модель не меняет больше, чем только один индексный путь,Удаление строки выполняет некоторую перезагрузку самостоятельно.

0 голосов
/ 20 апреля 2011

Возможно, вам нужен этот код:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        // Delete the row from the data source
        [[FavouritesController sharedController] removeFavouriteAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    }   
    else if (editingStyle == UITableViewCellEditingStyleNone) {
        // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
    }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...