使用SwiftUI中活动TextField中的值更新不活动TextField

时间:2019-10-23 05:02:24

标签: swift swiftui

是否可以将TextField绑定到SwiftUI中的其他TextField,其中活动TextField中的值用于更新非活动TextField的值?

在下面的代码中,我想将10的值输入到TextField X中,并让TextField Y自动显示数字13,即10 +3。或者,我想在TextField Y中输入18和9。将显示在以18/2计算得出的TextField X中。

struct ContentView: View {

    @State private var x = 0.0
    @State private var y = 0.0

    private var numberFormatter: NumberFormatter {
        let numFormatter = NumberFormatter()
        numFormatter.usesSignificantDigits = true
        return numFormatter
    }

    var body: some View {

        VStack(spacing: 20) {
            HStack {
                TextField("Enter X", value: $x, formatter: numberFormatter)
                    .frame(width: 120)
                Text("X where X = Y / 2")
                    .frame(alignment: .leading)
            }
            HStack {
                TextField("Enter Y", value: $y, formatter: numberFormatter)
                    .frame(width: 120)
                Text("Y where Y = X + 3")
                    .frame(alignment: .leading)
            }
        }
        .padding()
        .frame(width: 400)

    }
}

1 个答案:

答案 0 :(得分:0)

下面的代码可以满足您的要求,但是请注意,x和y仅在用户敲击键盘的返回按钮后自动更新,而不是自动。

TextField("Enter X", value: $x, formatter: numberFormatter, onEditingChanged: { _ in
    self.y = self.x + 3
})
TextField("Enter Y", value: $y, formatter: numberFormatter, onEditingChanged: { _ in
    self.x = self.y / 2
})