In my below code , no matter what I do I always get error for the expression that I use for imageData in init, I use it as a wrapper for Binding , I have tried _imageData = Binding(projectedValue: $imageData) but I keep getting error, how can I satisfy the Binding in initialiser, kindly guide, thanks
import SwiftUI
struct AddView: View {
@Binding var imageData: UIImage? <----------Use
@Environment(\.dismiss) var dismiss
@State var friendName: String = ""
let savePath = FileManager.documentsDirectory.appendingPathComponent("SavedFriends")
var save: (Friend) -> Void
init(save: @escaping (Friend) -> Void) {
self.save = save
_friendName = State(initialValue: "")
_imageData = Binding(projectedValue: $imageData) <----error
}
var body: some View {
NavigationView {
VStack {
TextField("your friends name", text: $friendName)
Image(uiImage: imageData!) <--------used here
.resizable()
// .frame(width: 40, height: 40)
.scaledToFit()
}
.toolbar {
ToolbarItem(placement: .navigationBarTrailing) {
Button("Save") {
let newFriend = Friend(picName: friendName, id: UUID())
save(newFriend)
dismiss()
}
.padding()
}
ToolbarItem(placement: .navigationBarLeading) {
Button("Cancel") {
dismiss()
}
.padding()
}
}
}
}
}
>Solution :
When you provide initialiser you have to initialise everything in it, ie. including binding.
Here is fixed variant
init(imageData: Binding<UIImage?>, save: @escaping (Frient) -> Void) {
self.save = save
_friendName = State(initialValue: "")
_imageData = imageData
}