2013-02-01 7 views
0

Je veux créer 3 fenêtres comme ceci:Cocoa obtenir la fenêtre principale

NSWindow *win1 = [[NSWindow alloc] initWithContentRect:rect1 
              styleMask:uiStyle 
               backing:backingStoreStyle 
               defer:NO]; 

et faire un d'entre eux la fenêtre principale, puis obtenir la fenêtre principale, mais je reçois toujours nil.

[win1 makeKeyAndOrderFront:win1]; 
[win2 makeKeyAndOrderFront:win2]; 
[win3 makeKeyAndOrderFront:win3]; 
[win2 makeMainWindow]; 

Et tous ces éléments sont nuls:

NSLog(@"%@", [app mainWindow]); 
NSLog(@"%@", [win1 isMainWindow]); 
NSLog(@"%@", [win2 isMainWindow]); 
NSLog(@"%@", [win3 isMainWindow]); 
+1

Downvoter; s'il vous plaît expliquer pourquoi vous avez downvoted. Cela ressemble à une question raisonnable pour moi. – trojanfoe

+0

Vous ne devriez pas enregistrer le résultat de '[NSWindow isMainWindow]' en utilisant le format '% @' car c'est un 'BOOL', pas un objet. Utilisez le format '% d' ou'% u' à la place. – trojanfoe

+0

Je viens d'enregistrer les informations de résultat ici, oui% d ou% u c'est mieux, mais j'ai aussi le 0, donc je le demande ici. – Frank

Répondre

0

J'ai essayé votre code. Il renvoie un objet NSWindow instancié. Je n'ai pas été nul du tout. Pouvez-vous s'il vous plaît poster plus de contexte à l'extrait de code?

Deuxièmement, il est beaucoup plus facile et gérable de créer une fenêtre dans IB. Troisièmement, vérifiez - (BOOL)canBecomeMainWindow avant de lui passer le message makeMainWindow.

Si vous souhaitez créer des fenêtres personnalisées, je suggère de créer une fenêtre dans MainMenu.xib. Obtenir son IBOutlet, par exemple window. Ensuite, créez vos fenêtres win1, win2 etc et ajoutez ensuite en tant que fenêtres enfants à votre window en utilisant addChildWindow.

+0

@ Andrew-Dufresne Salut, comment obtenez-vous l'objet? est-ce win2? Ici, je veux les coder en ligne de commande, et tester la mainwindow. Merci pour les commentaires. – Frank

+0

@Frank Voir cette [SO questions] (http://stackoverflow.com/q/656129/177116). Il a le code dont vous avez besoin pour créer NSWindow par programmation. –

Questions connexes