Невозможно присвоить свойству: "$text" является неизменным
Я хотел создать настраиваемое текстовое поле в SwiftUI для обработки первого респондента, но у меня была эта ошибка в коде, и структура неизменна. Не знаю, что мне делать?
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
}
}
}
1 ответ
Решение
В бета-4 реализация свойств оболочки изменилась.
До бета-версии 3 это было действительно:
self.$text = txt
В бета 4 оно изменилось на:
self._text = txt
Проверьте разницу в реализации, в этом другом вопросе я разместил:
И для более подробной информации: