swift - Swiftui 在 TextField 中输入值,然后单击按钮需要更改文本 - 不起作用
问题描述
我在 TextField 中输入值然后我单击按钮,单击后我需要更改文本并输入我的结果但我的代码不起作用,你能帮我吗
代码:
import SwiftUI
struct ContentView: View {
@State var numeral: Double = 0.00
@State var result: Double = 0.00
var body: some View {
VStack{
TextField("Enrer numeral", value: self.$numeral, formatter: NumberFormatter())
.padding(20)
.frame(width: 300, height: 100)
.font(.largeTitle)
Text("\(result)")
.font(.largeTitle)
.padding()
Button(action: {
self.result = self.numeral*1.2
print(self.result)
print("sfsdfd")
}) {
Image(systemName: "play.fill")
.font(.largeTitle)
.foregroundColor(.red)
}
}
}
}
解决方案
似乎在value:
用作输入时,SwiftUI 不会重新加载视图。
每当按下某个键时, SwiftUI 都会重新加载视图,并将text:
其用作输入。
使用以下方法进行操作。
struct ContentView: View {
@State var numeral : String = "0.00"
@State var result: Double = 0.00
var body: some View {
VStack {
TextField("Enrer numeral", text: $numeral)
.keyboardType(.decimalPad)
.padding(20)
.frame(width: 300, height: 100)
.font(.largeTitle)
Text("\(result)")
.font(.largeTitle)
.padding()
Button(action: {
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
if let val = Double(self.numeral) {
self.result = val * 1.2
print(self.numeral)
print(self.result)
}
else {
print("Entered value is invalid")
}
}) {
Image(systemName: "play.fill")
.font(.largeTitle)
.foregroundColor(.red)
}
}
}
}
推荐阅读
- c# - “变换不包含比例的定义,也没有可访问的方法,bla bla bla” Unity C#,有什么想法吗?
- c# - C# 将 JSON 反序列化为依赖于类型属性的类
- c - 我不能在 for 循环中使用现有变量
- flutter - 将数据从 fetch 存储到其他页面的 Routig 问题
- postgresql - PostgreSQL 没有很好地选择我的索引
- excel - 将txt文件转换为excel
- android - 在不同的安卓设备中使用具有相同应用程序的 BLE 传输数据
- r - ggplot 仅绘制顶部 X 条(由于 Shiny 在 ggplot 命令中)
- python - 使用 BeautifulSoup 抓取特定的“跨度”类时遇到问题
- salesforce - 获取客户生命周期价值(机会总和)和详细信息