You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 12:50:21