使用[NSBundle loadNibNamed:owner:]加载NIB,但窗口不会出现在前台

时间:2010-04-26 14:15:02

标签: objective-c cocoa macos nib nsbundle

我写了一个没有持久窗口或标准菜单的菜单应用程序。当另一个应用程序具有焦点并且我使用menulet触发要打开的窗口时,它会出现在前台应用程序的后面(但是在屏幕上出现的任何其他内容之上)。

基本上...

-(IBAction)aboutWindow:(id)sender {
    [NSBundle loadNibNamed:@"About" owner:self];
}

有人能指出我正确的方向,所以我可以让这个窗口出现在最初产生的所有其他应用程序之上吗?

[编辑]

我尝试使用自定义的NSWindowController与窗口链接,并且awakeFromNib调用makekeyandorderfront方法,但是没有做任何事情。

我现在而不是NSBundle电话:

NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
[[awc window] makeKeyAndOrderFront:nil];

这会产生窗口,但仍然不能在前台

2 个答案:

答案 0 :(得分:2)

想出来。窗口没有问题,它是应用程序。它不是在前台,因为它的性质是一个没有窗口的菜单,然后才产生这个窗口。最终代码:

-(IBAction)aboutWindow:(id)sender {
    NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
    [[awc window] makeKeyAndOrderFront:nil];
    [[NSApplication sharedApplication] arrangeInFront:nil];
}

答案 1 :(得分:1)

您可以尝试makeKeyAndOrderFront:

例如,在“关于”窗口的控制器中 - 假设控制器对窗口的引用为myWindow

- (void)awakeFromNib 
{
    [myWindow makeKeyAndOrderFront:nil];
}