SwiftUI - ReferenceFileDocument - 无法指示文档需要保存

Phi*_*den 7 swiftui

创建符合 的类时ReferenceFileDocument,如何指示文档需要保存。即相当于 的NSDocument方法updateChangeCount

zrf*_*ank 7

我遇到了同样的问题,SwiftUIReferenceFileDocument无法触发更新。最近,我通过错误报告收到了反馈,并建议我注册撤消。

事实证明,可以通过注册撤消操作来触发的更新ReferenceFileDocument,就像 一样。UIDocument不同之处在于DocumentGroup 明确地 UndoManager通过环境隐式设置。

例如,

@main
struct RefDocApp: App {
    var body: some Scene {
        DocumentGroup(newDocument: {
            RefDocDocument()
        }) { file in
            ContentView(document: file.document)
        }
    }
}

struct ContentView: View {
    @Environment(\.undoManager) var undoManager
    
    @ObservedObject var document: RefDocDocument

    var body: some View {
        TextEditor(text: Binding(get: {
            document.text
        }, set: {
            document.text = $0
            undoManager?.registerUndo(withTarget: document, handler: {
                print($0, "undo")
            })
        }))
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设在这个阶段,在 iOS 端,实际上是场景FileDocument之上的包装器UIDocumentDocumentGroup明确地 隐式地将 undoManager 分配给环境。因此,更新机制是相同的。