【问题标题】:Update inactive TextFields using value from active TextField in SwiftUI使用 SwiftUI 中活动 TextField 中的值更新非活动 TextField
【发布时间】:2019-10-23 05:02:24
【问题描述】:

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

在下面的代码中,我想在 TextField X 中输入值 10 并让 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)

    }
}

【问题讨论】:

    标签: swift swiftui


    【解决方案1】:

    下面的代码按照您的要求执行,但请注意 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
    })
    

    【讨论】:

    • 活动文本字段应该更新非活动文本字段。我编辑了我的问题以澄清这一点。
    • 如果您的意思是不活动的没有焦点的那个,那么它就可以工作。但是,如果您单击另一个 TextField,则会再次计算它。
    猜你喜欢
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2020-02-28
    • 1970-01-01
    • 2022-11-15
    • 2020-07-21
    相关资源
    最近更新 更多