如何在SwiftUI macOS应用中以编程方式关闭WindowGroup?
解决SwiftUI中关闭当前WindowGroup窗口的问题
在SwiftUI里不需要直接获取WindowGroup实例,借助Environment(\.dismiss)就能实现关闭当前窗口的需求,具体实现代码如下:
修改后的完整代码
@main struct ExampleApp: App { var body: some Scene { MainScene() SecondScene() } } struct MainScene: Scene { var body: some Scene { WindowGroup(id: "mainscene") { MainView() } } } struct MainView: View { // 注入用于关闭场景的环境变量 @Environment(\.dismiss) private var dismiss var body: some View { Text("Main") Button("close") { // 调用dismiss方法关闭当前窗口 dismiss() } } }
额外说明
@Environment(\.dismiss)是SwiftUI原生提供的环境变量,专门用于关闭当前视图所属的场景或窗口,完全契合SwiftUI的声明式编程逻辑。- 如果是macOS平台,也可以用
NSApplication.shared.keyWindow?.close()实现,但优先推荐dismiss(),兼容性和代码风格更统一。
内容的提问来源于stack exchange,提问作者FaiChou
相关产品推荐
相关产品推荐

