【发布时间】:2011-04-24 19:33:54
【问题描述】:
我有两个不同的表视图,在其中我使用tableView:MoveRowAtIndexPath:ToIndexPath: 中完全相同的代码来支持用户对行重新排序。这些 tableViews 之一完美地工作。然而,另一个变得混乱并开始显示相同的子视图,无论选择哪一行 - 即它的行索引似乎已经搞砸了。
我通过在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;
}
(值得一提的是,有效的是无效的子视图,并且它们处于一对多的核心数据关系中)。
【问题讨论】:
标签: iphone cocoa-touch uitableview core-data