Rather than selecting from a list, I'm trying to navigate between drawings like a book by using buttons to cycle through, but the canvas doesn't update.
I'm following the great tutorial by DevTechie for PencilKit in SwiftUI with CoreData.
The github repo is at [https://github.com/devtechie/DrawingDocuments]()
Here's my ContentView and my version of the DrawingWrapper. The DrawingWrapper uses a DrawingManager (SwiftUI) to pull from CoreData and the DrawingViewController to define a PKCanvas. I wasn't sure which delegate to use and really struggling understanding how to refresh the canvas.
ContentView
DrawingWrapper
I'm following the great tutorial by DevTechie for PencilKit in SwiftUI with CoreData.
The github repo is at [https://github.com/devtechie/DrawingDocuments]()
Here's my ContentView and my version of the DrawingWrapper. The DrawingWrapper uses a DrawingManager (SwiftUI) to pull from CoreData and the DrawingViewController to define a PKCanvas. I wasn't sure which delegate to use and really struggling understanding how to refresh the canvas.
ContentView
Code Block struct ContentView: View { @StateObject var manager = DrawingManager() @State var addNewShown = false @State var pageNumber: Int = 0 @State var newVar = UUID() var body: some View { VStack{ Text(manager.docs[pageNumber].name!) HStack{ Button(action:{ pageNumber -= 1 newVar = manager.docs[pageNumber].id! //desiredDoc = manager.docs[pageNumber] }){ Image(systemName: "chevron.left") } Spacer() Button(action:{ pageNumber += 1 newVar = manager.docs[pageNumber].id! //desiredDoc = manager.docs[pageNumber] }){ Image(systemName: "chevron.right") } } } }
DrawingWrapper
Code Block struct DrawingWrapper: UIViewControllerRepresentable { var manager: DrawingManager @Binding var doc: DrawingDoc typealias UIViewControllerType = DrawingViewController class Coordinator: NSObject, PKCanvasViewDelegate { var parent: DrawingWrapper init(_ parent: DrawingWrapper){ self.parent = parent } func canvasViewDidFinishRendering(_ canvasView: PKCanvasView) { if let uiDrawing = canvasView.drawing as? PKDrawing { parent.doc.data = uiDrawing.dataRepresentation() } } } func makeCoordinator() -> Coordinator { Coordinator(self) } func makeUIViewController(context: UIViewControllerRepresentableContext<DrawingWrapper>) -> DrawingWrapper.UIViewControllerType { let viewController = DrawingViewController() viewController.drawingData = doc.data! viewController.drawingChanged = {data in manager.update(data: data, for: doc.id!) } viewController.delegate = context.coordinator return viewController } func updateUIViewController(_ uiViewController: DrawingViewController, context: UIViewControllerRepresentableContext<DrawingWrapper>) { uiViewController.drawingData = doc.data! } }