ios - 当您点击另一个 TextField 时,如何获取要更新的 TextField 的绑定值?
问题描述
如果我使用以下内容创建 SwiftUI TextField:
init<S, T>(_ title: S, value: Binding<T>, formatter: Formatter)
它仅在按下 Return 时更新绑定值。如果我在按下 return 之前选择了不同的字段,第一个字段仍会显示其新值,但绑定的变量不会更新。
以下初始化似乎onEditingChanged
可能对我有帮助,
init<S, T>(_ title: S, value: Binding<T>, formatter: Formatter, onEditingChanged: @escaping (Bool) -> Void = { _ in }, onCommit: @escaping () -> Void = {})
但此时文档实际上是空的。这个较早的问题似乎相似,但没有公布答案,可能早于上面的第二个 init。
如果未更新绑定值,在OnCommit
操作中如何获取 TextField 中显示的字符串以对其进行格式化/将其转换为数字?
解决方案
尝试这样的事情:
struct ContentView: View {
@State var test1 = "test1"
@State var test2 = "test2"
var body: some View {
VStack {
TextField(test1, text: Binding(get: {
self.test1
}, set: { newVal in
self.test1 = newVal
self.test2 = newVal
}))
TextField(test2, text: $test2)
}
}