首页 > 解决方案 > 当您点击另一个 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 中显示的字符串以对其进行格式化/将其转换为数字?

标签: iosswiftuitextfield

解决方案


尝试这样的事情:

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)
    }
}

推荐阅读