我正在做一个学校项目,我必须在一个不同的星球上找到一个人的体重,但是我对如何使用输入并将其乘以每个星球上的重力感到困惑。另外,我不确定weight是否为int且可以乘以另一个数字,
这是代码
struct PlanetDetail: View {
let planet : Planet
@State var weight = ""
var body: some View {
VStack {
Text(planet.name)
Text("Gravity on mercury is\(planet.gravity)")
TextField( "Enter your weight", text:$weight)
Text("your weight on \(planet.name) is ")
}
}
}
最佳答案
您已指定体重变量,如下所示:@State var weight = ""
通过分配一个空字符串(""
),您已声明weight为字符串。
为了将此值与整数相乘,您需要将字符串值转换为整数。
您还需要处理用户可以在文本输入中输入非数字值的情况。
而是将重量值存储为整数。
您可以通过创建一个绑定来解决此问题,该绑定在用户在文本字段中输入值时使用。例如:
@State var weight = 0
var body: some View {
let weightProxy = Binding<String>(
get: { String(format: "%.02f", Int(self.weight)) },
set: {
if let value = NumberFormatter().number(from: $0) {
self.weight = value.intValue
}
}
)
然后,将您的TextField绑定到weightProxy:
TextField( "Enter your weight", text:$weightProxy)
最好的情况是让TextField只接受数字。这还需要更多工作,但可能是下一步解决的好项目!
关于ios - 在SwiftUi中使用用户输入执行计算,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58346002/