我正在尝试在 TextField 中键入内容时更改 Text 的值。当我在TextField中键入任何内容时,我想使用Textfield值进行一些计算并将其显示在Text上。在Swift中,我们有UITextField的func textFieldDidChange(_ textField: UITextField)
委托方法来跟踪UITextField的更改。
在SwiftUI中,我尝试使用onEditingChanged
创建TextField。但不知何故,它并没有进入那个障碍。我不知道自己是否做错了什么。
@State var totalAmount: String = ""
@State var addAmount: String = ""
var body: some View {
HStack {
TextField("0.0", text: $totalAmount, onEditingChanged: { _ in
self.addAmount = //doing some calculation with totalAmount
})
Text(self.addAmount)
}
}
任何人都可以帮忙吗?
答案 0 :(得分:7)
SwiftUI不像可可。它不是事件驱动的,并且从一个接口对象到另一个接口对象之间没有通信。只有数据。数据通过状态变量流动。它通过状态变量的 binding 流动 up 和通过状态变量的 value 流动 down 。
因此,您不需要onEditingChanged
事件或任何其他事件。 $totalAmount
是绑定。当文本字段的文本自动更改时,它也会更改。
此外,totalAmount
是状态变量。如果文本直接或间接使用此值作为其值,则当{{1 }} 变化。
因此,只需使用一个取决于totalAmount
的计算变量,并确定Text的值就可以完成。
一个非常基本的例子:
totalAmount