我不是从列表中选择,而是尝试通过使用按钮循环在图纸之间导航,但画布不会更新。
我正在关注 DevTechie 在https://www.youtube.com/watch?v=amZH2i6l004&list=PLbrKvTeCrFAfoACvHOPWFmDIaKUqBZgEr&index=5上的精彩教程
github 存储库位于https://github.com/devtechie/DrawingDocuments
这是我的 ContentView 和我的 DrawingWrapper 版本。DrawingWrapper 使用 DrawingManager (SwiftUI) 从 CoreData 和 DrawingViewController 中提取以定义 PKCanvas。我不确定要使用哪个代表,并且很难理解如何刷新画布。
内容视图
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")
}
}
}
}
绘图包装器
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!
}
}