问题描述
我不是从列表中选择,而是尝试通过使用按钮循环浏览,像书一样在绘图之间导航,但画布不会更新。
我正在 https://www.youtube.com/watch?v=amZH2i6l004&list=PLbrKvTeCrFAfoACvHOPWFmDIaKUqBZgEr&index=5
上学习 DevTechie 的精彩教程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!
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)