Я пытаюсь создать UITextView, который редактирует значение currentDisplayedAddress
. Значение также изменяется другими представлениями, и я хочу, чтобы UITextView обновлял свой текст, когда это происходит.
Представление инициализируется правильно, и я могу редактировать currentDisplayedAddress
из AddressTextField
без проблем и запускать соответствующие просматривать обновления. Однако, когда значение изменяется другими представлениями, текст textField не изменяется, даже если textField.text
печатает правильное обновленное значение внутри updateUIView
и другие представления обновляются соответственно.
Я понятия не имею, что может вызвали это. Любая помощь очень ценится.
struct AddressTextField: UIViewRepresentable {
private let textField = UITextField(frame: .zero)
var commit: () -> Void
@EnvironmentObject var userData: UserDataModel
func makeUIView(context: UIViewRepresentableContext<AddressTextField>) -> UITextField {
textField.text = self.userData.currentDisplayedAddress
textField.delegate = context.coordinator
return textField
}
func updateUIView(_ uiView: UITextField, context: UIViewRepresentableContext<AddressTextField>) {
if self.textField.text != self.userData.currentDisplayedAddress {
DispatchQueue.main.async {
self.textField.text = self.userData.currentDisplayedAddress
}
}
}
(...)
func makeCoordinator() -> Coordinator { Coordinator(self) }
class Coordinator: NSObject, UITextFieldDelegate {
var addressTextField: AddressTextField
func textFieldShouldReturn(_ textField: UITextField) -> Bool { //delegate method
textField.resignFirstResponder()
addressTextField.userData.currentDisplayedAddress = textField.text ?? String()
addressTextField.commit()
return true
}
}
}