我有兩個不同的表格視圖,我使用tableView:MoveRowAtIndexPath:ToIndexPath:
中完全相同的代碼來支持用戶對行的重新排序。其中一個tableView可以很好地工作。然而,另一個混淆並開始顯示相同的子視圖,無論哪一行被選中 - 即其行索引似乎已被搞亂。爲什麼重新排序我的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;
}
(對於它的價值,其工作方式之一是不一個的子視圖,以及他們在以 - 核心數據關係)。
沒有什麼區別,恐怕。在不同的表格視圖之間不會發生混淆,但是在一個表格視圖的行之間 - 在手動移動行之後,突然敲擊任何行與敲擊最上面一行相同。 – 2011-04-25 07:18:36