我有一个具有@FocusState
变量的父视图,我想将其传递到包含TextField
的子视图中。我希望能够从子视图内改变FocusState
,但我得到错误Cannot assign to property: 'self' is immutable
和Cannot assign value of type 'Bool' to type 'FocusState<Bool>.Binding'
。
父视图:
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
}
}
}
直接通过绑定赋值给包装值,比如
Button("Click me!") {
isEditing.wrappedValue = false // << here !!
}