두 개의 서로 다른 테이블 뷰가 있습니다.이 테이블 뷰에서 tableView:MoveRowAtIndexPath:ToIndexPath:
에있는 동일한 코드를 사용하여 행의 사용자 순서 재 지정을 지원합니다. 이러한 tableView 중 하나가 완벽하게 작동합니다. 그러나 다른 하나는 혼란에 빠지며 어떤 행이 선택 되더라도 동일한 하위 뷰를 표시하기 시작합니다. 즉, 행 인덱싱이 엉망이 된 것처럼 보입니다.왜 내 테이블을 재정렬하면 데이터가 엉망이됩니까?
MoveRowAtIndexPath
메서드 끝에 [tableView reloadData]
을 추가하여 일시적으로 문제를 해결했지만 처음에는 제대로 작동하지 않는 이유를 이해하지 못합니다. 특히 동일한 코드가 포함 된 다른보기가 완벽하게 작동하므로 . 분명히,이 뷰 컨트롤러에는 또 다른 방법이 있어야합니다.이 뷰 컨트롤러는 엉망입니다. 그러나 나는 어디에서보아야할지 모르겠습니다. 여기
- (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;
}
(그것은 가치가 무엇인지, 일하는 사람은하지 않는 하나의 자식이다, 그들은에에 들어 - 많은 핵심 데이터 관계).
아무런 차이가 없으므로 걱정됩니다. 다른 표보기간에 혼합이 일어나지 않지만 하나의 표보기에서 행 사이에서 - 수동으로 행을 이동 한 후 갑자기 행을 두드리는 것은 맨 위 행을 두드리는 것과 같습니다. –