その方法をネットで調べたところ、モーダルを閉じるときと同じでした。
下記コードで実現できます。
struct ContentView: View {
@Environment(\.dismiss) var dismiss
var body: some View {
Button("Close") {
dismiss()
}
}
}
これで、NSApplicationDelegate
のapplicationShouldTerminateAfterLastWindowClosed
メソッドが呼ばれます。このメソッドでtrue
を返せば、アプリを終了できます。
NSApplication.shared.terminate(nil)
を呼ぶとapplicationShouldTerminateAfterLastWindowClosed
メソッドが呼ばれずにアプリが終了します。
どちらの方法でアプリを終了させても
NSApplicationDelegate
のapplicationWillTerminate
メソッドが呼ばれるため、アプリの後処理はここに書くのがよさそうです。
@Environment
でやれることが沢山あるので、覚えられません。