基于文档的macOS SwiftUI应用如何在启动时显示欢迎窗口?
基于文档的SwiftUI macOS应用启动时自动显示欢迎窗口的纯SwiftUI方案需求
我开发了一款基于文档的SwiftUI macOS应用,希望在启动时显示类似Xcode的欢迎窗口。已编写如下代码:
Window("Welcome", id: "welcome") { WelcomeView() } .windowStyle(.hiddenTitleBar) .windowResizability(.contentSize)
该窗口外观符合预期,且在Window菜单中显示位置正确(未归入文档窗口),但无法实现启动时自动显示。我已尝试以下方法:
- 使用
@Environment(\.openWindow) var openWindow并在App的init函数中调用,因未进入SwiftUI生命周期报错; - 将
openWindow调用放入Task并延迟执行,无效果; - 通过
@Environment(\.scenePhase)触发openWindow,仅在文档窗口创建后触发,时机过晚; - 改用
WindowGroup并设置handlesExternalEvents,导致File->New菜单同时包含普通文档和欢迎窗口,不符合需求; - 尝试过一种依赖
onAppear的启动多窗口方案,但基于文档的应用启动时无实例化View,无法使用该方法。
我已通过AppKit(使用AppDelegate创建NSWindow并托管WelcomeView)实现需求,但希望找到纯SwiftUI的解决方案。
更新:已通过AppKit完成实现,留此问题等待更优方案。
内容的提问来源于stack exchange,提问作者Taylor
相关产品推荐
相关产品推荐

