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