2010-05-22 144 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

在界面生成器中,是否在窗口中檢查「在啓動時可見」?如果這樣取消選中它,那麼你甚至不需要此代碼[[activeNodeDialog window] close] ;.基本上,如果檢查出來,那麼當xib被實例化時,窗口會自動顯示......你不想要的。

+0

確實,這是造成這個問題。謝謝 – 2010-05-22 23:29:34

+1

感謝上帝。這個答案挽救了我的生命。 – Jason 2013-08-05 23:38:01