2010-05-22 4 views
10

Я сейчас установить положение окна, который собирается открыть так:Установка Положение NSWindow перед отображением

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

Проблема, которая, что окно будет «прыгать», когда показано , И это несмотря на то, что я установил позицию, прежде чем показывать окно с помощью «makeKeyAndOrderFront». Окно - NSPanel *. Кто-нибудь знает, как исправить прыжки?

Установка позиции в awakeFromNib не является опцией, потому что главный контроллер установлен позже.

ответ

14

В интерфейсе Builder отображается «visible at launch» для окна? Если это снимите флажок, тогда вам даже не понадобится этот код [[windowNodeDialog window] close] ;. В основном, если это отмечено, окно автоматически отображается при создании экземпляра xib ... который вам не нужен.

+0

Действительно, это вызывало эту проблему. Спасибо –

+1

Слава богу. Этот ответ спас мою жизнь. – Jason

Смежные вопросы