在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
相关产品推荐
相关产品推荐

