Reputation: 1891
I get the following error:
Cannot assign value of type 'Binding' to type 'String'
How to fix it? Please help.
struct TextFieldWithClear: View {
var title: String
@Binding var text: String
init(_ title: String, text: Binding<String>) {
self.title = title
self.text = $text // ERROR: Cannot assign value of type 'Binding<String>' to type 'String'
}
var body: some View {
HStack {
TextField("Title", text: $text)
Image(systemName: "xmark.circle.fill")
.onTapGesture { text = "" }
}
}
}
Upvotes: 16
Views: 17686
Reputation: 30746
struct TextFieldWithClear: View {
let title: String
@Binding var text: String
var body: some View {
HStack {
TextField("Title", text: $text)
Image(systemName: "xmark.circle.fill")
.onTapGesture { text = "" }
}
}
}
Upvotes: -1
Reputation: 4006
Replace:
self.text = $text
with:
self._text = text
You need to inject the value of text
into the wrapped value of self.text
. The underscore "opens" the Binding for you to change its wrapped value. Don't need to use $
in your initializer.
Upvotes: 45