2009-05-06 4 views
6

Sto provando a scrivere l'equivalente programmatico di un file di pennini che ho configurato che contiene due finestre: una finestra principale e un foglio che viene visualizzato dopo il lancio per richiedere le credenziali. Il cablaggio di questi in IB funziona correttamente, a condizione che si ricordi di deselezionare la casella "Visibile all'avvio" sul foglio/finestra.Equivalente programmatico di "Visibile all'avvio" per NSWindows

Tuttavia non riesco a capire quale sia l'equivalente API di "Visibile all'avvio". Quando eseguo la mia app utilizzando la versione programmatica, il foglio viene rimosso e non la vista chiave nello stesso modo in cui la mia app ha eseguito il pennino quando è stato selezionato "Visibile all'avvio". Quindi la mia ipotesi, quindi, è che mi manca la salsa segreta visibile al lancio.

Qualcuno sa come fare?

P.S. So come rendere questo lavoro in IB, in particolare voglio capire il codice equivalente quindi per favore non dirmi di usare solo il pennino. Lo so.

risposta

2

I NSWindows vengono in genere creati nascosti. Quindi non dovresti fare nulla; semplicemente non mostrare la finestra finché non ne hai bisogno. Ecco un semplice esempio.

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

Il campo di testo ha ottenuto il focus della tastiera quando ho eseguito quanto sopra.

In futuro, fornire il codice in casi come questo: è molto più semplice correggere il codice esistente che scrivere un nuovo codice.

+0

Nicholas, mi dispiace per la mancanza di esempio di codice. Ho un semplice caso di test che funziona così ora ho solo bisogno di capire quali sono le differenze tra il mio caso di test di lavoro e il mio codice reale. Grazie per l'aiuto! –

+1

Grazie signori. Ho appena incontrato lo stesso problema, e la differenza sembra essere il tipo di finestra stessa. Ho avuto il mio impostato su 'NSBorderlessWindowMask' e non ha funzionato. Quando l'ho cambiato in 'NSTitledWindowMask', tutto ha funzionato come un incantesimo! –