2009-05-06 3 views
6

Ich versuche, das programmatische Äquivalent einer Nib-Datei zu schreiben, die zwei Fenster enthält: ein Hauptfenster und ein Blatt, das nach dem Start erscheint, um nach Anmeldeinformationen zu fragen. Die Verkabelung in IB funktioniert einwandfrei, solange man sich daran erinnert, das Feld "Sichtbar beim Start" auf dem Blatt/Fenster zu deaktivieren.Programmatisches Äquivalent von "Sichtbar bei Start" für NSWindows

Allerdings kann ich nicht herausfinden, was die API entspricht "Sichtbar beim Start". Wenn ich meine App unter Verwendung der programmatischen Version ausführe, wird das Blatt getrennt und nicht die Schlüsselansicht auf die gleiche Weise, wie meine App mit der Spitze lief, wenn "Sichtbar beim Start" aktiviert war. Meine Annahme ist also, dass ich die geheime Soße mit sichtbarem Start vermisse.

Weiß jemand, wie man das macht?

P.S. Ich weiß, wie man das in IB macht, ich möchte speziell den Code kennenlernen, also bitte sag mir nicht, dass ich nur die Feder benutzen soll. Ich weiß das.

Antwort

2

NSWindows werden normalerweise verborgen erstellt. Du solltest also nichts tun müssen. Zeigen Sie das Fenster nicht, bis Sie es brauchen. Hier ist ein einfaches Beispiel.

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]; 

Das Textfeld erhalten Tastaturfokus, wenn ich oben lief.

Geben Sie in Zukunft Code in Fällen wie diesem an - es ist viel einfacher, vorhandenen Code zu korrigieren als neuen Code zu schreiben.

+0

Nicholas, sorry über das Fehlen von Code Beispiel. Ich habe einen einfachen Testfall, so dass ich jetzt nur herausfinden muss, was die Unterschiede zwischen meinem Testfall und meinem tatsächlichen Code sind. Danke für Ihre Hilfe! –

+1

Danke, meine Herren. Ich bin gerade auf das gleiche Problem gestoßen, und der Unterschied scheint der Typ des Fensters selbst zu sein. Ich habe meine auf 'NSBorderlessWindowMask' eingestellt und es hat nicht funktioniert. Als ich es in 'NSTitledWindowMask' änderte, funktionierte alles wie ein Zauber! –

Verwandte Themen