如果用户使用 Xcode 中的 Document App 模板创建 SwiftUI 应用程序,macOS 会从一个新文档开始。这很好。我可以使用它在新文档中呈现入职 UI。
然而,在 iOS 上运行相同的应用程序时,库存文档视图控制器会向用户致意以创建或选择文档。
这没有帮助,因为我无法提供入职或任何其他自定义信息。
我确实注意到,如果您将 WindowGroup 添加到场景中,应用程序将显示该窗口组。但后来我不知道如何让用户进入选择器 UI。
有没有人想出如何在这个基于 DocumentGroup 的应用程序之上执行诸如呈现入职之类的事情?
这是一个完整的文档应用程序
import SwiftUI
import UniformTypeIdentifiers
@main
struct DocumentTestApp: App {
var body: some Scene {
DocumentGroup(newDocument: DocumentTestDocument()) { file in
ContentView(document: file.$document)
}
}
}
struct ContentView: View {
@Binding var document: DocumentTestDocument
var body: some View {
TextEditor(text: $document.text)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView(document: .constant(DocumentTestDocument()))
}
}
extension UTType {
static var exampleText: UTType {
UTType(importedAs: "com.example.plain-text")
}
}
struct DocumentTestDocument: FileDocument {
var text: String
init(text: String = "Hello, world!") {
self.text = text
}
static var readableContentTypes: [UTType] { [.exampleText] }
init(configuration: ReadConfiguration) throws {
guard let data = configuration.file.regularFileContents,
let string = String(data: data, encoding: .utf8)
else {
throw CocoaError(.fileReadCorruptFile)
}
text = string
}
func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
let data = text.data(using: .utf8)!
return .init(regularFileWithContents: data)
}
}