Повторно открыть окно моего приложения из меню в строке состояния - PullRequest
1 голос
/ 29 декабря 2011

Когда красный X нажимается, мое окно исчезает, но, как и было задумано, мой элемент строки состояния остается в строке состояния.

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

[window makeKeyOrderFront:self];

это будет выполнено, но компилятор не распознает "окно".Я новичок в цели с / какао, поэтому я уверен, что упускаю что-то очевидное.

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

Здесь window - это переменная, которую вы использовали для хранения объекта NSWindow* из вашего приложения - предполагается, что вы все еще держите его в одном из ваших классов (обычно в делегате приложения - шаблоне делегата приложения Xcode по умолчанию). даже создает свойство для window). Однако все это зависит от типа вашего приложения - все это должно быть автоматическим, если ваше приложение основано на документе (вы можете вызвать openUntitledDocumentAndDisplay:error:, чтобы создать новый документ). Если это не так, то управление вашим окном действительно полностью зависит от вашего кода - обычно в делегате приложения.

0 голосов
/ 28 января 2013

Я недавно взялся за это, и вот что сработало для меня.Все три вещи обрабатываются в AppDelegate:

// Ответ на повторное открытие выбора меню приложения

- (IBAction)showMainWindow:(id)sender
{
    [self applicationShouldHandleReopen:nil hasVisibleWindows:YES];
    [[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
}

// Это необходимо, если вы хотите, чтобы главное окно появилось после его закрытия пользователем

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [_window setReleasedWhenClosed:NO]; 
}

// Это нужно, если вы хотите, чтобы главное окно появилось после того, как его закрыл пользователь

- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{
    [_window setIsVisible:YES];
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...