I have solved (most) of my problems, and here is my code.
var body: some View {
GeometryReader { geometry in
Path { path in
for drawing in self.drawableStaff.drawingList {
self.add(drawing: drawing, toPath: &path)
}
self.add(drawing: self.drawableStaff.drawing, toPath: &path)
print("Current path: \(path)")
self.drawableStaff.pathHolder = path
print("PathHolder: \(self.$drawableStaff.pathHolder)")
}
.stroke(self.drawableStaff.color, lineWidth: self.drawableStaff.lineWidth)
.background(Color(UIColor.systemBackground))
.gesture(
DragGesture(minimumDistance: 0.1)
.onChanged({ (value) in
let currentPoint = value.location
if currentPoint.y >= 0
&& currentPoint.y < geometry.size.height {
self.drawableStaff.drawing.points.append(currentPoint)
}
})
.onEnded({ (value) in
self.drawableStaff.drawingList.append(self.drawableStaff.drawing)
self.drawableStaff.drawing = Drawing()
})
)
}
.frame(maxHeight: .infinity)
}
I also had a typo in pathHolder in DrawableStaff where pathHolder was typed as PathHolder, which was causing line 10 issues.
This fixes the main issue, but causes a different unrelated issue.
Post
Replies
Boosts
Views
Activity
I just realized that I forgot to include the add() method in my original post.
I have looked through the definition of DrawingStaff a bit, and have attempted to better make it fit with the new enum instead of the individual variables that it was previously using.
struct DrawingPad: View {
@Binding var drawableStaff: DrawableStaff
var body: some View {
GeometryReader { geometry in
Path { path in
for drawing in self.drawableStaff.drawingList {
self.add(drawing: drawing, toPath: &path)
}
self.add(drawing: self.drawableStaff.drawing, toPath: &path)	// Call self.add()
print(path)
self.drawableStaff.pathHolder = path
print("PathHolder: \(self.$drawableStaff.pathHolder)")
}
.stroke(self.drawableStaff.color, lineWidth: self.drawableStaff.lineWidth)
.background(Color(UIColor.systemBackground))
.gesture(
DragGesture(minimumDistance: 0.1)
.onChanged({ (value) in
let currentPoint = value.location
if currentPoint.y >= 0
&& currentPoint.y < geometry.size.height {
self.drawableStaff.drawing.points.append(currentPoint)
}
})
.onEnded({ (value) in
self.drawableStaff.drawingList.append(self.drawableStaff.drawing)
self.drawableStaff.drawing = Drawing()
})
)
}
.frame(maxHeight: .infinity)
}
Replacing self.drawableStaff.drawings with self.drawableStaff.drawingList fixes one of the errors, but I am still getting a bunch of errors related to the binding
Whoops, I forgot to include Drawing!
struct Drawing {
var points: [CGPoint] = [CGPoint]()
}