Как сделать приложение Cocoa завершено, когда основное окно закрыто? Без этого вы должны щелкнуть значок приложения и выйти в меню.
Сделать приложение Cocoa завершено, когда основное окно закрыто?
Ответ 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
}