2009-05-06 5 views
6

J'essaie d'écrire l'équivalent programmatique d'un fichier nib que j'ai configuré et qui contient deux fenêtres: une fenêtre principale et une feuille qui apparaît après le lancement pour demander des informations d'identification. Le câblage de IB fonctionne correctement, à condition de ne pas cocher la case "Visible au lancement" sur la feuille/fenêtre.Equivalent programmatique de "Visible au lancement" pour NSWindows

Cependant je ne peux pas comprendre ce que l'équivalent API est de "Visible au lancement". Lorsque je lance mon application en utilisant la version programmatique, la feuille est détachée et non la vue clé de la même manière que mon application a fonctionné avec la plume lorsque "Visible au lancement" a été cochée. Donc, ma supposition, alors, c'est que je manque la sauce secrète visible au lancement.

Est-ce que quelqu'un sait comment faire cela?

P.S. Je sais comment faire ce travail dans IB, je veux spécifiquement comprendre le code équivalent alors s'il vous plaît ne me dites pas d'utiliser simplement la plume. Je le sais.

Répondre

2

NSWindows sont généralement créés cachés. Donc vous ne devriez pas avoir à faire quoi que ce soit; ne montrez pas la fenêtre tant que vous n'en avez pas besoin. Voici un exemple simple.

NSWindow *sheetWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 100, 100) styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO]; 
NSTextField *field = [[NSTextField alloc] initWithFrame: NSMakeRect(25, 25, 50, 50)]; 
[[sheetWindow contentView] addSubview:field]; 
[NSApp beginSheet:sheetWindow modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(sheetDidEnd:) contextInfo:NULL]; 

Le champ de texte a obtenu le focus du clavier lors de l'exécution de ce qui précède.

À l'avenir, veuillez fournir le code dans des cas comme celui-ci: il est beaucoup plus facile de corriger un code existant que d'écrire du nouveau code.

+0

Nicholas, désolé pour le manque d'exemple de code. J'ai un cas de test simple fonctionnant alors maintenant j'ai juste besoin de comprendre quelles sont les différences entre mon test-case de travail et mon code réel. Merci de votre aide! –

+1

Merci, messieurs. J'ai juste rencontré le même problème, et la différence semble être le type de la fenêtre elle-même. J'avais le mien réglé sur 'NSBorderlessWindowMask' et cela n'a pas fonctionné. Quand je l'ai changé en 'NSTitledWindowMask', tout a fonctionné comme un charme! –

Questions connexes