如何在 macOS SwiftUI 生命周期中关闭/退出我的应用程序?

use*_*ser 5 swift swiftui

我想知道如何关闭或退出我的应用程序?我还有一些用于关闭应用程序的代码,但代码看起来不现代并且更新为 SwiftUI,我们是否有一些新的更好的代码?

import SwiftUI

@main
struct Work_Space_macOSApp: App {
    var body: some Scene {
        WindowGroup {

            VStack {

                Button("Close App") {
                    
                    // Do we have more SwifUI-ish code for closing App?
                    NSApplication.shared.keyWindow?.close()
                }
                
                Button("Quit App") {
                    // How can I quit the app?
                    
                }
                
            }
            .frame(width: 200, height: 200)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

rob*_*off 10

终止应用程序:

NSApplication.shared.terminate(nil)
Run Code Online (Sandbox Code Playgroud)

AppKit 还有很多很多功能 SwiftUI 不支持。


Dun*_*ald 5

我认为您不应该直接终止您的应用程序。当最后一个窗口被用户关闭或以编程方式关闭时,使用它来触发终止。

@main
struct SwiftUIApp: App {
    @NSApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    ...

}


class AppDelegate: NSObject, NSApplicationDelegate {
    func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
        return true
    }
    
}
Run Code Online (Sandbox Code Playgroud)