\[DocumentManager\] The view service did terminate with error: Error Domain=\_UIViewServiceErrorDomain Code=1 "(null)" UserInfo={Terminated=disconnect method}
我在选择文件后会出现上述错误。我在我的主应用程序中遇到了这个问题,所以我做了一个虚拟的,以防我的原始代码有一些问题,但我仍然得到了同样的错误。
以下是我的代码:
import SwiftUI
import PDFKit
struct ContentView: View {
@State private var isPickerPresented = false
@State private var selectedURL: URL?
var body: some View {
VStack {
if let url = selectedURL {
PDFKitRepresentedView(url: url)
} else {
Text("No PDF selected")
}
Button(action: {
self.isPickerPresented = true
}) {
Text("Choose File")
}
}.sheet(isPresented: $isPickerPresented) {
DocumentPickerViewControllerRepresentable() { url in
self.selectedURL = url
}
}
}
}
struct PDFKitRepresentedView: UIViewRepresentable {
let url: URL
func makeUIView(context: Context) -> PDFView {
let pdfView = PDFView()
pdfView.document = PDFDocument(url: url)
return pdfView
}
func updateUIView(_ uiView: PDFView, context: Context) {
uiView.document = PDFDocument(url: url)
}
}
struct DocumentPickerViewControllerRepresentable: UIViewControllerRepresentable {
private let onPick: (URL) -\> Void
init(onPick: @escaping (URL) -> Void) {
self.onPick = onPick
}
func makeUIViewController(context: Context) -> UIDocumentPickerViewController {
let documentPickerController = UIDocumentPickerViewController(forOpeningContentTypes: [.pdf])
documentPickerController.delegate = context.coordinator
return documentPickerController
}
func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: Context) {
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
final class Coordinator: NSObject, UIDocumentPickerDelegate {
private let parent: DocumentPickerViewControllerRepresentable
init(_ parent: DocumentPickerViewControllerRepresentable) {
self.parent = parent
}
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let url = urls.first else { return }
parent.onPick(url)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我试着直接使用Swift UI制作一个上传器,但由于这不起作用,我最终使用UIViewControllerRepresentable(),但遇到了同样的错误。我试着在网上寻找解决方案,但大多数要么已经过时,要么给了我同样的错误。
1条答案
按热度按时间brgchamk1#
文档选取器
使用工具包uiview
UIViewRepresentable然后
上传并查看PDF
别忘了