Hallo Zusammen,
ich habe eine ältere App für iOS (13.2) die den QLPreviewController nutzt. hier kann ich PDF Dokumente mit Notizen versehen. Dieses Editieren Funktionen anscheinend mit dem Zusammenspiel mit PencilKit Alles kein Problem. Funktioniert wunderbar. Jetzt habe ich ein neues Projekt, welches wir mit SwiftUI (14.0) umsetzen möchten. Bisher konnten wir alle Aufgaben auch mit SwiftUI lösen. Nebenbei, es macht auch Spass mit SwiftUI zu arbeiten. Jetzt mein Problem, Ich kann bekannte Datentypen entsprechend anzeigen. Was nicht funktioniert, das Editieren aktiviert. in dem DataSource/delegate wird aufgerufen. Die Toolbar mit den Symbol für das Editieren fehlt. Jett habe ich zwei Fragen, die erste ist eine Verständnis - Frage zu SwiftUI: kapselt SwiftUI nicht vorhanden fertige Sachen, die auch in UIKit sind, oder wird alles neu implementiert von Apple, was ich nicht glaube. Meine zweite Frage: Kann man vielleicht SwiftUI hier umgehen und bestimmte Teile einer App weiter mit UIKit realisieren, wenn es kein Workaround für das Problem mit SwiftUI gibt.
Vielen Dank für euren Gehirnschmalz.
LG
Anbei mal ein Auszug aus meinen test-Projekt für SwiftUI:
Alles anzeigen
Alles anzeigen
ich habe eine ältere App für iOS (13.2) die den QLPreviewController nutzt. hier kann ich PDF Dokumente mit Notizen versehen. Dieses Editieren Funktionen anscheinend mit dem Zusammenspiel mit PencilKit Alles kein Problem. Funktioniert wunderbar. Jetzt habe ich ein neues Projekt, welches wir mit SwiftUI (14.0) umsetzen möchten. Bisher konnten wir alle Aufgaben auch mit SwiftUI lösen. Nebenbei, es macht auch Spass mit SwiftUI zu arbeiten. Jetzt mein Problem, Ich kann bekannte Datentypen entsprechend anzeigen. Was nicht funktioniert, das Editieren aktiviert. in dem DataSource/delegate wird aufgerufen. Die Toolbar mit den Symbol für das Editieren fehlt. Jett habe ich zwei Fragen, die erste ist eine Verständnis - Frage zu SwiftUI: kapselt SwiftUI nicht vorhanden fertige Sachen, die auch in UIKit sind, oder wird alles neu implementiert von Apple, was ich nicht glaube. Meine zweite Frage: Kann man vielleicht SwiftUI hier umgehen und bestimmte Teile einer App weiter mit UIKit realisieren, wenn es kein Workaround für das Problem mit SwiftUI gibt.
Vielen Dank für euren Gehirnschmalz.
LG
Anbei mal ein Auszug aus meinen test-Projekt für SwiftUI:
Quellcode
- import SwiftUI
- struct ContentView: View {
- // force unwrap the optional, because the test file has to be in the bundle
- let fileUrl = Bundle.main.url(forResource: "LoremIpsum", withExtension: "pdf")!
- @State private var showingPreview = false
- var body: some View {
- Button("Preview File") {
- self.showingPreview = true
- }
- /*
- .fullScreenCover(isPresented: $showingPreview, content: FullScreenModalView.init){
- VStack(spacing: 0) {
- HStack {
- Button("Done") {
- self.showingPreview = false
- }
- Spacer()
- }
- .padding()
- //PreviewController(url: self.fileUrl)
- }
- }
- */
- .fullScreenCover(isPresented:$showingPreview) {
- VStack(spacing: 0) {
- HStack {
- Button("Done") {
- self.showingPreview = false
- }
- Spacer()
- }
- .padding()
- PreviewController(url: self.fileUrl)
- }
- }
- }
- }
Quellcode
- import SwiftUI
- import QuickLook
- struct PreviewController: UIViewControllerRepresentable {
- let url: URL
- func makeUIViewController(context: Context) -> QLPreviewController {
- let controller = QLPreviewController()
- controller.dataSource = context.coordinator
- controller.delegate = context.coordinator
- controller.setEditing(true, animated: false)
- return controller
- }
- func updateUIViewController(_ uiViewController: QLPreviewController, context: Context) {
- if context != nil {
- print(context.coordinator)
- }
- uiViewController.setEditing(true, animated: false)
- }
- func makeCoordinator() -> Coordinator {
- return Coordinator(parent: self)
- }
- class Coordinator: NSObject,QLPreviewControllerDelegate,QLPreviewControllerDataSource {
- //var description: String
- let parent: PreviewController
- init(parent: PreviewController) {
- self.parent = parent
- }
- func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
- return 1
- }
- func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
- return parent.url as NSURL
- }
- func previewController(_ controller: QLPreviewController, editingModeFor previewItem: QLPreviewItem) -> QLPreviewItemEditingMode {
- return .updateContents
- }
- func previewController(_ controller: QLPreviewController, didUpdateContentsOf previewItem: QLPreviewItem) {
- print("didUpdateContentsOf")
- }
- func previewController(_ controller: QLPreviewController, didSaveEditedCopyOf previewItem: QLPreviewItem, at modifiedContentsURL: URL) {
- let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
- let currentTimeStamp = String(Int(NSDate().timeIntervalSince1970))
- let destinationUrl = documentsDirectoryURL.appendingPathComponent("newFile\(currentTimeStamp).\(modifiedContentsURL.pathExtension)")
- print(destinationUrl.path)
- if FileManager.default.fileExists(atPath: destinationUrl.path) {
- debugPrint("The file already exists at path")
- }
- else{
- do {
- try FileManager.default.moveItem(at: modifiedContentsURL, to: destinationUrl)
- print("File moved to documents folder")
- } catch let error as NSError {
- print(error.localizedDescription)
- }
- }
- }
- }
- }
Si tacuisses, philosophus mansisses !