2

UITableViewController 内で編集したい UITableView があります。このコードは、tableView を編集するために呼び出すメソッドからのものです。

    [self.tableView beginUpdates];
    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject: path] withRowAnimation:UITableViewRowAnimationNone];
    [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject: path] withRowAnimation:UITableViewRowAnimationNone];

    NSMutableArray *things = [[self.fetchedResultsController fetchedObjects] mutableCopy];

    self.storedCell = [things objectAtIndex: path.row];

    [things removeObjectAtIndex: path.row];

    for ( int i = 0; i < [things count]; i++) {
        Task *mo = (Task *)[things objectAtIndex: i];
        [mo setValue:[NSNumber numberWithInt: i] forKey:@"displayOrder"];
    }
    [things release]; things = nil;
    self.newPath = path;

    [self.managedObjectContext save: nil]; 
    [self.tableView endUpdates];

これがスローされるエラーです。

    *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempt to create two animations for cell'

私が間違ったことについてのアイデアはありますか?

4

1 に答える 1

3

同じ行を削除してから挿入する代わりに、それが必要な場合は、再読み込みするだけです:

[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:path] withRowAnimation:UITableViewRowAnimationNone];

ただし、行を削除する必要があるように見えるので、おそらく行を削除する必要がありますinsertRowsAtIndexPaths。(もちろん、すべてのコードを投稿したわけではないので、確かなことはわかりません....)

于 2012-04-07T02:52:17.883 に答える