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

在visionOS中如何调用dismissWindow关闭结构体定义的窗口

关闭SwiftUI中带参数的WindowGroup窗口

要关闭你定义的SubTransformationView窗口,需要利用SwiftUI的@Environment(\.dismissWindow)环境动作,结合窗口ID和对应的MyData实例来定位并关闭目标窗口,具体实现如下:

1. 在目标视图中注入关闭动作

在需要触发关闭逻辑的视图(比如你的CardView)中,添加@Environment(\.dismissWindow)属性获取关闭窗口的方法,再通过按钮触发关闭:

struct CardView: View {
    let cardIndex: Int
    let cardType: String
    @EnvironmentObject var sharedState: SharedState
    // 注入关闭窗口的环境动作
    @Environment(\.dismissWindow) private var dismissWindow
    
    var body: some View {
        VStack(spacing: 20) {
            Text("卡片索引: \(cardIndex)")
            Text("卡片类型: \(cardType)")
            
            Button("关闭当前窗口") {
                // 构造与当前窗口对应的MyData实例
                let targetData = MyData(intValue: cardIndex, stringValue: cardType)
                // 指定窗口ID和对应的数据实例,触发关闭
                dismissWindow(id: "SubTransformationView", value: targetData)
            }
            .buttonStyle(.borderedProminent)
        }
        .padding()
    }
}

2. 关键注意点

  • dismissWindow(id:value:)的两个核心参数:
    • id:必须与你定义WindowGroup时指定的"SubTransformationView"完全一致
    • value:要关闭的窗口对应的MyData实例,需和打开该窗口时传入的数据完全匹配(同一个WindowGroup可同时打开多个对应不同数据的窗口)
  • 该API仅支持iOS 16.0+、macOS 13.0+及更高版本系统

内容的提问来源于stack exchange,提问作者János

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:32:09