У меня есть два разных табличных представления, в которых я использую один и тот же код в tableView:MoveRowAtIndexPath:ToIndexPath:
для поддержки переупорядочения строк пользователем. Один из этих tableViews работает отлично. Другой, однако, запутывается и начинает отображать одно и то же подпредставление, независимо от того, какая строка выбрана, то есть его индексация строк, похоже, испортилась.
Я временно исправил это, добавив [tableView reloadData]
в конце метода MoveRowAtIndexPath
, но я не понимаю, почему он не работал с самого начала - особенно с другой точки зрения с точно таким же Код работает отлично. Очевидно, что в этом контроллере представления должен быть другой метод, который его портит, но я не знаю, где искать.
Вот код, который одинаков для обоих:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
userDrivenDataModelChange = YES;
NSMutableArray *things = [[fetchedResultsController fetchedObjects] mutableCopy];
NSManagedObject *thing = [[self fetchedResultsController] objectAtIndexPath:fromIndexPath];
[things removeObject:thing];
[things insertObject:thing atIndex:[toIndexPath row]];
int i = 0;
for (NSManagedObject *mo in things)
{
[mo setValue:[NSNumber numberWithInt:i++] forKey:@"displayOrder"];
}
[things release], things = nil;
[managedObjectContext save:nil];
userDrivenDataModelChange = NO;
}
(Для чего это стоит, то, что работает, является дочерним представлением того, которое не работает, и они находятся во многих Базовых данных).