Objective c 使用[NSBundle loadNibNamed:owner:]加载NIB,但窗口不显示在前景中
我编写了一个菜单应用程序,它没有持久窗口或标准菜单。当另一个应用程序有焦点时,我使用菜单集触发打开一个窗口,它出现在前台应用程序的后面(但在屏幕上显示的任何其他内容之上) 基本上Objective c 使用[NSBundle loadNibNamed:owner:]加载NIB,但窗口不显示在前景中,objective-c,cocoa,macos,nib,nsbundle,Objective C,Cocoa,Macos,Nib,Nsbundle,我编写了一个菜单应用程序,它没有持久窗口或标准菜单。当另一个应用程序有焦点时,我使用菜单集触发打开一个窗口,它出现在前台应用程序的后面(但在屏幕上显示的任何其他内容之上) 基本上 -(IBAction)aboutWindow:(id)sender { [NSBundle loadNibNamed:@"About" owner:self]; } 有人能给我指出正确的方向吗?这样,当这个窗口最初生成时,我就可以让它出现在所有其他应用程序之上 [编辑] 我尝试过在窗口链接的情况下使用自定义N
-(IBAction)aboutWindow:(id)sender {
[NSBundle loadNibNamed:@"About" owner:self];
}
有人能给我指出正确的方向吗?这样,当这个窗口最初生成时,我就可以让它出现在所有其他应用程序之上
[编辑]
我尝试过在窗口链接的情况下使用自定义NSWindowController,并从NIB中唤醒MakeKeyandDerfront方法,但没有任何效果
现在,我有了以下选项,而不是NSBundle调用:
NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
[[awc window] makeKeyAndOrderFront:nil];
这就产生了窗口,但仍然无法使其出现在前景中您可以尝试
makekeyandderfront:
例如,在About窗口的控制器中-假设控制器对窗口的引用为myWindow
:
- (void)awakeFromNib
{
[myWindow makeKeyAndOrderFront:nil];
}
我明白了。窗口没有问题,是应用程序问题。它不在前景中,因为它本质上是一个菜单集,在生成它之前没有窗口。最终代码:
-(IBAction)aboutWindow:(id)sender {
NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
[[awc window] makeKeyAndOrderFront:nil];
[[NSApplication sharedApplication] arrangeInFront:nil];
}
好的,我试着在一个定制的NSWindowController中使用它,但是没有效果。我现在已经删除了最初的NSBundle调用,并拥有:NSWindowController*awc=[[NSWindowController alloc]initWithWindowNibName:@“About”];[[awc窗口]MakeKeyandDerfront:nil];这就产生了这个窗口,但仍然没有在nib包含的前台中出现:文件所有者(NSObject)、第一响应者、应用程序、窗口(NSWindow)->内容视图->静态文本、静态文本。