2010-05-22 11 views
10

Adesso sto impostando la posizione di una finestra che si sta per aprire in questo modo:Impostazione Posizione del NSWindow prima visualizzazione

-(void) setActiveNodeDialog:(ISKNodeDialogController *)dialog 
{ 
    if (activeNodeDialog) 
     [[activeNodeDialog window] close]; 
    activeNodeDialog = dialog; 
    if (activeNodeDialog) { 
     [activeNodeDialog setMainWindowController:self]; 
     NSRect windowRect = [[self window] frame]; 
     NSRect dialogRect = [[activeNodeDialog window] frame]; 
     NSPoint pos; 
     pos.x = windowRect.origin.x + windowRect.size.width - dialogRect.size.width - 10; 
     pos.y = windowRect.origin.y + 32; 
     [[activeNodeDialog window] setFrameOrigin:pos]; 
     [[activeNodeDialog window] makeKeyAndOrderFront:nil]; 
    } 
} 

Il problema che è, che la finestra sarà "saltare" quando visualizzato . E anche se ho impostato la posizione prima di mostrare la finestra con "makeKeyAndOrderFront". La finestra è un NSPanel *. Qualche idea su come risolvere il salto?

L'impostazione della posizione in awakeFromNib non è un'opzione in quanto il controller principale è impostato in seguito.

risposta

14

In Interface Builder, è "visibile all'avvio" selezionato per la finestra? Se è così, deselezionalo e non avrai nemmeno bisogno di questo codice [[activeNodeDialog window] close] ;. Fondamentalmente se è selezionato, la finestra viene automaticamente visualizzata quando lo xib viene istanziato ... quale non vuoi.

+0

In effetti, quello stava causando quel problema. Grazie –

+1

Grazie a dio. Questa risposta mi ha salvato la vita. – Jason

Problemi correlati