Hi together,
I am developing a document viewer for a specific API. I download the relevant files to a custom directory and open them using a QLPreviewController in SwiftUI. I built this with a UIViewControllerRepresentable.
Everything is working fine except the saving of modified files using the pencil markup in the preview.
Here is the error:
https://pastebin.com/TRnfduE5
This is how my controller looks like:
struct PreviewController: UIViewControllerRepresentable {
let url: URL
@Binding var isPresented: Bool
func makeUIViewController(context: Context) -> UINavigationController {
let controller = QLPreviewController()
controller.dataSource = context.coordinator
controller.navigationItem.leftBarButtonItem = UIBarButtonItem(
barButtonSystemItem: .done, target: context.coordinator,
action: #selector(context.coordinator.dismiss)
)
let navigationController = UINavigationController(rootViewController: controller)
return navigationController
}
func makeCoordinator() -> Coordinator {
return Coordinator(parent: self)
}
func updateUIViewController(_ uiViewController: UINavigationController, context: Context) {
let controller = QLPreviewController()
controller.dataSource = context.coordinator
}
class Coordinator: QLPreviewControllerDataSource {
let parent: PreviewController
init(parent: PreviewController) {
self.parent = parent
}
@objc func dismiss() {
parent.isPresented = false
}
func numberOfPreviewItems(
in controller: QLPreviewController
) -> Int {
return 1
}
func previewController(
_ controller: QLPreviewController, previewItemAt index: Int
) -> QLPreviewItem {
return parent.url as QLPreviewItem
}
func previewController(_ controller: QLPreviewController, editingModeFor previewItem: QLPreviewItem
) -> QLPreviewItemEditingMode {
.createCopy
}
func previewController(_: QLPreviewController, didUpdateContentsOf: QLPreviewItem){
print("Updated.")
}
func previewController(_: QLPreviewController, didSaveEditedCopyOf: QLPreviewItem, at: URL) {
print("Saved: " + at.path)
}
}
}
Does anyone know, what the problem is here?
And I made another experience: as you see there, I'm currently only logging the output / actions - and there isn't anything being logged, if I made just one edit. It only throws the error above after the 1st edit - so if I edit sth again and tap done or the pencil icon again...
Is this ok so?
Thanks for any help or advise!