0

私はNSFetchedResultsControllerが取り込まれたテーブルビューを持っています。
didSelectRowAtIndexPathは現在のを更新していrowます。ここでの並べ替えは変更しないでください。選択した行の違いは、それを既読としてマークすることです。タイトル変更等はありません。

iOS4 では、行が更新されても現在の場所に残り、セクションの最後には移動しません。それが正しい方法です。

iOS5 では行も更新されますが、セクションの最後に移動します。それを防ぎたい。どうやってやるの?そして、なぜそれが起こっているのですか?

私のコードを見てください:

- (NSFetchedResultsController *)fetchedResultsController
{
if (__fetchedResultsController != nil)
{
    return __fetchedResultsController;
}


NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];

NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntitySetsCardsInbox" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSPredicate *inboxPred = [NSPredicate predicateWithFormat:@"archived == 0 AND cardId != 0"];
[fetchRequest setPredicate:inboxPred];


if (sortString == nil) {
    //sortString = [[NSString alloc] initWithString:@"sortingOrder"];
    sortString = [[NSString alloc] initWithString:@"colorOrder"];
    sortAsc = NO;
}


if ([sortString isEqualToString:@"cardTitle"]) {
    NSSortDescriptor *sortDescriptor2 = [[[NSSortDescriptor alloc] initWithKey:sortString ascending:sortAsc selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
    NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor2, nil] autorelease];
    [fetchRequest setSortDescriptors:sortDescriptors];

    XLog(@"sortDescriptors: %@", sortDescriptors);
} else {
    NSSortDescriptor *sortDescriptor2 = [[[NSSortDescriptor alloc] initWithKey:sortString ascending:sortAsc] autorelease];
    NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor2, nil] autorelease];
    [fetchRequest setSortDescriptors:sortDescriptors];

    XLog(@"sortDescriptors: %@", sortDescriptors);
}


NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;

    [...]
}    
4

1 に答える 1