2010-05-22 3 views
10

En ce moment je suis réglage de la position d'une fenêtre qui est sur le point d'ouvrir comme ceci:Réglage de la position de NSWindow avant Affichage

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

Le problème qui est que la fenêtre « sauter » quand montré . Et cela même si j'ai mis la position avant de montrer la fenêtre avec "makeKeyAndOrderFront". La fenêtre est un NSPanel *. Quelqu'un a des idées pour réparer le saut?

La définition de la position dans awakeFromNib n'est pas une option car le contrôleur principal est défini ultérieurement.

Répondre

14

Dans Interface Builder, la case «visible au lancement» est-elle cochée pour la fenêtre? Si c'est le cas, alors vous n'aurez même pas besoin de ce code [[activeNodeDialog window] close] ;. Fondamentalement, si cela est vérifié, la fenêtre est automatiquement affichée lorsque le xib est instancié ... ce que vous ne voulez pas.

+0

En effet, cela causait ce problème. Merci –

+1

Dieu merci. Cette réponse m'a sauvé la vie. – Jason

Questions connexes