Anj*_*iya 1 textfield ios swiftui
我试图在输入TextField时更改Text的值。当我在TextField中键入任何内容时,我想使用Textfield值进行一些计算并将其显示在Text上。在Swift中,我们有UITextField的委托方法来跟踪UITextField的更改。func textFieldDidChange(_ textField: UITextField)
在SwiftUI中,我尝试使用创建TextField onEditingChanged。但不知何故,它并没有进入那个障碍。我不知道我是否做错了什么。
@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)
}
}
Run Code Online (Sandbox Code Playgroud)
有人能帮忙吗?
SwiftUI不像可可。它不是事件驱动的,并且从一个接口对象到另一个接口对象之间没有通信。只有数据。数据流通过状态变量。它由状态变量的绑定向上流动,而由状态变量的value 向下流动。
因此,您不需要任何onEditingChanged事件或任何其他事件。$totalAmount是一个绑定。当文本字段的文本更改时,它会自动更改。
而且,totalAmount是一个状态变量。如果文本直接或间接使用此值作为其值,则文本在更改时会自动totalAmount更改。
因此,只需使用一个取决于的计算变量,totalAmount并确定Text的值就可以完成。
最基本的例子:
struct ContentView : View {
@State var totalAmount = ""
let addAmount = 10.0 // or whatever
var calc : Double { (Double(totalAmount) ?? 0.0) + addAmount } // or whatever
var body: some View {
HStack {
TextField("Type a number", text: $totalAmount)
.textFieldStyle(RoundedBorderTextFieldStyle())
.frame(width:100)
Text(String(self.calc))
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |