Загрузка NIB с использованием [NSBundle loadNibNamed: owner:], но окно не появляется на переднем плане - PullRequest
3 голосов
/ 26 апреля 2010

Я написал приложение меню, в котором нет постоянного окна или стандартного меню. Когда другое приложение находится в фокусе, и я использую меню для запуска окна, которое открывается, оно появляется позади основного приложения (но выше всего, что присутствует на экране).

В основном ...

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

Может ли кто-нибудь указать мне правильное направление, чтобы я мог отображать это окно над всеми другими приложениями при его первоначальном создании?

[Изменить]

Я пытался использовать пользовательский NSWindowController со связанным окном и awakeFromNib, вызывающий метод makekeyandorderfront, но это ничего не делало.

Теперь у меня вместо вызова NSBundle:

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

И это порождает окно, но все еще не делает его на переднем плане

Ответы [ 2 ]

2 голосов
/ 26 апреля 2010

Разобрался. С окном все было в порядке, это было приложение. Он не был на переднем плане из-за своей природы как меню без окон до появления этого. Конечный код:

-(IBAction)aboutWindow:(id)sender {
    NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
    [[awc window] makeKeyAndOrderFront:nil];
    [[NSApplication sharedApplication] arrangeInFront:nil];
}
1 голос
/ 26 апреля 2010

Вы можете попробовать makeKeyAndOrderFront:

Например, в контроллере окна О программе - при условии, что контроллер имеет ссылку на окно как myWindow:

- (void)awakeFromNib 
{
    [myWindow makeKeyAndOrderFront:nil];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...