J'ai une simple application Core Data qui affiche une liste d'entités dans la fenêtre principale. Pour créer ou ajouter de nouvelles entités, j'utilise une deuxième fenêtre modale avec un contexte d'objet géré distinct afin que les modifications puissent être annulées/refaites sans interférer avec le contexte d'objet géré principal.NSUndoManager et runModalForWindow:
La fenêtre d'édition est lancée à l'aide de runModalForWindow:
. Si je fais une série de changements discrets dans cette fenêtre modale, faire une seule annulation annule TOUT mes changements. J'ai essayé de définir les modes de boucle d'exécution de NSUndoManager
(obtenus à partir du deuxième contexte d'objet géré) pour contenir NSModalPanelRunLoopMode
mais cela ne semblait pas faire de différence.
Si je ne lance pas la fenêtre en utilisant runModalForWindow:
et que j'utilise simplement makeKeyAndOrderFront:
, tout fonctionne comme prévu.
Quelqu'un at-il déjà rencontré cela?
Kevin
Je ne comprends pas pourquoi vous voulez deux contextes. Voulez-vous deux piles d'annulation? Quand vous écrivez "une seule annulation ..." quelle pile annulez-vous, le contexte de la fenêtre d'origine ou modale? – paulmelnikow