I have a parent view with a @FocusState
variable that I want to pass into a child view that contains a TextField
. I want to be able to change the FocusState
from within the child view, but I get the errors Cannot assign to property: 'self' is immutable
and Cannot assign value of type 'Bool' to type 'FocusState<Bool>.Binding'
.
Parent view:
struct ParentView: View {
@State private var text: String
@FocusState private var isEditing: Bool
var body: some View {
ChildView($text, $isEditing)
}
}
struct ChildView: View {
@Binding var text: String
var isEditing: FocusState<Bool>.Binding
init(_ text: Binding<String>, _ isEditing: FocusState<Bool>.Binding) {
self._text = text
self.isEditing = isEditing
}
var body: some View {
TextField("Username", text: $text)
.focused(isEditing)
Button("Click me!") {
isEditing = false // Error here
}
}
}
Just assign via binding to wrapped value, like
Button("Click me!") {
isEditing.wrappedValue = false // << here !!
}