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

SwiftUI中如何禁用WindowGroup窗口持久化?

解决SwiftUI重启后内容窗口残留的问题

你的代码中,WindowGroup默认会自动恢复用户之前打开的窗口状态,这就是重启后内容窗口残留的原因。要实现类似Xcode的启动逻辑——每次启动只显示欢迎窗口,内容窗口不自动恢复,可以通过以下修改解决:

  1. 禁用内容窗口的自动恢复:给内容窗口的WindowGroup添加.restorationBehavior(.never),阻止系统保存和恢复该窗口组的窗口状态。
  2. 确保欢迎窗口强制显示:在欢迎窗口的.onAppear回调中触发打开操作,保证每次App启动时都会显示欢迎窗口,不受之前关闭状态的影响。

修改后的完整代码:

import SwiftUI

@main
struct StackApp: App {
    @Environment(\.openWindow) var openWindow
    
    var body: some Scene {
        Window("Welcome to App", id: "welcome-to-app") {
            VStack {
                Text("Welcome")
                Button(action: {
                    openWindow(id: "app-content")
                }) {
                    Text("Open Content")
                }
            }
        }
        .defaultSize(CGSize(width: 200, height: 200))
        .onAppear {
            // 确保启动时打开欢迎窗口
            openWindow(id: "welcome-to-app")
        }
        
        WindowGroup(id: "app-content") {
            VStack {
                Text("App Content")
            }
        }
        .defaultSize(CGSize(width: 200, height: 200))
        .restorationBehavior(.never) // 禁止内容窗口自动恢复
    }
}

注:.restorationBehavior是macOS 13.0+(Ventura)及iOS 16.0+的API,适配对应系统版本即可生效。

内容的提问来源于stack exchange,提问作者southwest-quack

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:25:17