2010-05-12 4 views
13

Я пытаюсь открыть NSWindow, используя следующий код:Как открыть NSWindow и выбрать окно в фокусе?

NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"]; 
[window showWindow:nil]; 

окно открывается нормально, но предыдущее окно по-прежнему MainWindow и в фокусе. Я попробовал следующий код, чтобы заставить главное окно, и оно не работает. Окно по-прежнему имеет отключенную строку заголовка и не принимает ключевые события и т.д.

[self.window makeKeyAndOrderFront:self]; 
[self.window makeMainWindow]; 

Единственный способ, которым я, кажется, чтобы иметь возможность получить предыдущее окно терять фокус, если я закрою окно после вызова ShowWindow: с [[NSApp mainWindow] закрыть];

Любые идеи?

+4

Не знаете, почему я получил -1 здесь, кто-нибудь, дайте мне знать, как я мог бы улучшить вопрос? – Luke

ответ

13

makeKeyAndOrderFront: - это путь. Вы уверены, что self.window и window похоже на тот же объект?

+0

Спасибо, но он все еще не работает. Я добавил [окно makeKeyAndOrderFront: self]; вызовите сразу после showWindow: и он все еще не работает. Должен ли я позвонить в другое место? – Luke

+0

'makeKeyAndOrderFront:' правильный метод. Неважно, где вы это называете. Еще одна проблема. Например, главное окно может быть модальным, или что-то отказывается отказаться от статуса первого ответчика. –

+1

Да, проблема была в пределах периметра, см. Мой ответ на решение. – Luke

8

Я разрешил проблему, назначив WindowController файловому владельцу nib вместо того, чтобы иметь отдельный объект NSWindowController в nib.

+0

Я хотел бы добавить один момент к этому, я забыл подключить окно к моему NSWindow в Interface Builder. Это привело к тому, что код не работал для меня, поэтому для всех, кто это читает, не забудьте подключить выход из окна. Простая ошибка, но одна, которая может оставить вас расстроенным на века LOL – Supertecnoboff

Смежные вопросы