Подтвердить что ты не робот

Сделать приложение Cocoa завершено, когда основное окно закрыто?

Как сделать приложение Cocoa завершено, когда основное окно закрыто? Без этого вы должны щелкнуть значок приложения и выйти в меню.

4b9b3361

Ответ 1

Вы можете реализовать applicationShouldTerminateAfterLastWindowClosed:, чтобы вернуть YES в делегат приложения. Но я бы подумал дважды, прежде чем делать это, так как это действительно необычно на Mac за пределами небольших "полезных" приложений, таких как Калькулятор, и большинство пользователей Mac не оценят, как ваше приложение ведет себя так странно.

Ответ 2

Добавьте этот фрагмент кода в делегат вашего приложения:

-(BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)app {
    return YES;
}

Ответ 3

У вас должен быть IBOutlet в главном окне. Например: IBOutlet NSWindow * mainWindow;

- (void)awakeFromWindow {
    [mainWindow setDelegate: self];
}
- (void)windowWillClose:(NSNotification *)notification {
    [NSApp terminate:self];
}

Если это не сработает, вы должны добавить наблюдателя в NSNotificationCenter для уведомления NSWindowWillCloseNotification. Не забудьте проверить, закрывается ли правое окно.

Ответ 4

В основном речь идет о программировании Cocoa, а не о конкретном язык (Objective-C), вот версия Swift от Chuck and Steve's Ответ:

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool {
        return true
    }

    // Your other application delegate methods ...

}

Для Swift 3 измените определение метода на

func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
    return true
}