Search code examples
swiftuivisionos

How to call dismissWindow in visionOS when defined with a struct


I have this definition for a window, which can be opened with parameters:

struct MyData: Codable, Hashable {
    var intValue: Int
    var stringValue: String
}

struct i2ElevatorApp: App {
    private var portraitSize : CGSize = CGSize(width: 1000, height: 600)
    private var landscapeSize : CGSize = CGSize(width: 600, height: 400)
    private var landscapeSize2x : CGSize = CGSize(width: 800, height: 600)
    let sharedState = SharedState()
    var body: some Scene {
        WindowGroup {
            ContentView().environmentObject(sharedState)
        }.defaultSize(portraitSize)
        WindowGroup(id: "SubTransformationView", for: MyData.self) { data in
            if let data = data.wrappedValue {
                CardView(cardIndex: data.intValue, cardType: data.stringValue)
                    .environmentObject(sharedState)
            } else {
                EmptyView()
            }
        }.defaultSize(portraitSize)

So how to call dismissWindow for it?


Solution

  • Using the corresponding environment variable:

    @Environment(\.dismissWindow) private var dismissWindow
    

    You can call it like:

    dismissWindow(id: "SubTransformationView")