无法分配给属性:“$text"是不可变的 [英] Cannot assign to property: '$text' is immutable
本文介绍了无法分配给属性:“$text"是不可变的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在 SwiftUI 中创建一个自定义文本字段来处理第一响应者,但是我在代码中出现了这个错误并且结构是不可变的我不知道我该怎么办?
I wanted to make a custom textfield in SwiftUI to can handle first responder but I had this error in the code and struct is immutable I don't know what should I do?
struct CustomTextField: UIViewRepresentable {
class Coordinator: NSObject, UITextFieldDelegate {
@Binding var text: String
var didBecomeFirstResponder = false
init(txt: Binding<String>) {
self.$text = txt
}
func textFieldDidChangeSelection(_ textField: UITextField) {
text = textField.text ?? ""
}
}
@Binding var text: String
var isFirstResponder: Bool = false
func makeUIView(context: UIViewRepresentableContext<CustomTextField>) -> UITextField {
let textField = UITextField(frame: .zero)
textField.delegate = context.coordinator
return textField
}
func makeCoordinator() -> CustomTextField.Coordinator {
return Coordinator(txt: $text)
}
func updateUIView(_ uiView: UITextField, context: UIViewRepresentableContext<CustomTextField>) {
uiView.text = text
if isFirstResponder && !context.coordinator.didBecomeFirstResponder {
uiView.becomeFirstResponder()
context.coordinator.didBecomeFirstResponder = true
}
}
}
推荐答案
在 beta 4 中,属性包装器的实现发生了变化.
In beta 4, the implementation of property wrappers changed.
在 beta 3 之前,这是有效的:
Until beta 3, this was valid:
self.$text = txt
在测试版 4 中,它更改为:
In beta 4, it changed to:
self._text = txt
检查实现上的差异,在我发布的另一个问题中:
Check for the difference in implementation, in this other question I posted:
https://stackoverflow.com/a/57088052/7786555
了解更多详情:
https://stackoverflow.com/a/56975728/7786555
这篇关于无法分配给属性:“$text"是不可变的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文