2010-11-19 2 views
1

J'ai une fenêtre d'édition avec plusieurs champs, tous liés à la clé de contrôleur 'content' d'un NSObjectController, qui est à son tour lié au contrôleur 'selection' clé d'un NSArrayController. J'ai aussi un NSTableView, lié au même NSArrayController, avec sa sélection.Cocoa-bindings, retardant les modifications jusqu'à ce que l'utilisateur clique sur 'OK'

Dans ma fenêtre d'édition, dès que l'utilisateur quitte un champ de texte, la valeur est propagée à NSTableView. Comment puis-je arrêter la valeur validée jusqu'à ce que l'utilisateur clique sur "OK" dans la fenêtre d'édition?

+0

J'ai essayé de créer un new ManagedObjectContext pour la fenêtre d'édition, mais les modifications sont immédiatement répercutées même sans appel de [contexte save]. Je ne sais pas si c'est une bonne approche ou non. Je suis toujours lié à la sélection du ManagedObjectContext principal, cela peut faire que cela ne fonctionne pas comme je l'ai prévu. Est-il possible de copier la sélection d'un contexte à un autre, peut-être? –

Répondre

1

Vous pouvez utiliser un objet NSMutableDictionary temporaire pour stocker les valeurs dans la fenêtre d'édition, puis lorsque l'utilisateur clique sur « OK » instancier un objet en utilisant les valeurs du dictionnaire: à savoir:

NSManagedObject* obj = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject"            
         inManagedObjectContext: self.managedObjectContext]; 

[obj setValuesForKeysWithDictionary:tempObject]; 
0

Je suggère d'utiliser une valeur transitoire dans la fenêtre d'édition. Ensuite, lorsque l'utilisateur clique sur "OK", affectez-lui la valeur.

+0

Voulez-vous dire ... lier à un wrapper pour '[obj value]' comme '[obj valueTransient]', puis dans la méthode lorsque l'utilisateur clique sur OK, passez par et faites '[obj setValue: [objValueTransient]] ' ? J'ai l'impression de manquer quelque chose. –

+0

Désolé, je voulais juste dire utiliser un objet complètement séparé jusqu'à ce que l'utilisateur frappe OK – griotspeak

Questions connexes