2014-09-08 2 views
2

Je veux ouvrir une seconde fenêtre pour agir comme un éditeur de contenu pour certains des champs dans la fenêtre principale de mon application. J'ai créé un NSWindowController personnalisé (appelé ItemEditor) avec sa propre plume.OS X deuxième fenêtre ne restera pas ouverte

J'ouvre la nouvelle fenêtre avec ce code:

ItemEditor *editor = [[ItemEditor alloc] initWithWindowNibName:@"ItemEditor"]; 
[editor showWindow:nil]; 
[editor.window makeKeyAndOrderFront:nil]; 

La nouvelle fenêtre apparaît pour un instant, puis disparaît immédiatement. Les éléments initWithWindow: et windowDidLoad de ItemEditor sont appelés, mais windowWillClose: ne l'est pas.

Quelqu'un peut-il me dire ce qui se passe ici? Je suis perplexe.

Répondre

0

En fait, vous utilisez ARC ... et rien ne se trouve sur votre objet "editor" après sa création. C'est pourquoi il disparaît dès qu'il est créé.

Vous devez définir "editor" comme propriété "strong" dans le contrôleur de fenêtre parent.

En d'autres termes, déclarer comme ceci dans le fichier .h du contrôleur de vue parent:

@property (strong) ItemEditor *editor; 

Et remplacer la première ligne de l'extrait de code ci-dessus avec ceci:

self.editor = [[ItemEditor alloc] initWithWindowNibName:@"ItemEditor"]; 
+0

qui a fait la tour. Tout fonctionne maintenant. Merci! – DKJ

Questions connexes