是否可以在 SwiftUI iOS 应用程序中组合 WindowGroup 和 DocumentGroup?

Hey*_*man 5 ios swift swiftui documentgroup swiftui-windowgroup

我正在开发一个 SwiftUI iOS 应用程序,最初是从 A WindowGroup 开始的。在另一个视图中,我决定需要将该视图呈现为 DocumentGroup 场景,以利用它附带的所有功能。我不希望应用程序的入口点是 DocumentGroup 场景。我只是希望我的应用程序的入口点是 WindowGroup 场景,然后在 WindowGroup 场景的另一个视图中,我想调用 DocumentGroup 场景来打开,就好像该应用程序是基于文档的应用程序一样。任何帮助都感激不尽。谢谢

mal*_*hal 1

我在 Xcode 13.3 和 macOS 12.3 中进行了测试,我注意到 ifWindowGroup首先声明,然后只有该窗口打开,而文件浏览器在启动应用程序时不会打开,如果关闭窗口然后单击应用程序的停靠图标,它会再次打开一个新窗口。不幸的是,我注意到一个错误,如果您在下次重新启动时命令+退出应用程序(而不是停止它),它会显示窗口和文件浏览器,而不仅仅是窗口(我将报告这一点)。

import SwiftUI

@main
struct DocumentTestApp: App {
    var body: some Scene {
        WindowGroup("Hello") { // group order matters
            VStack {
                Text("Hello")
             
                Button("New") {
                    NSDocumentController.shared.newDocument(nil)
                }
            }
            .padding()
        }
        }
        DocumentGroup(newDocument: DocumentTestDocument()) { file in
            ContentView(document: file.$document)
        }
        DocumentGroup(newDocument: DocumentTestDocument2()) { file in
            ContentView2(document: file.$document)
        }
        
    }
}
Run Code Online (Sandbox Code Playgroud)