我正在做一个学校项目,我必须在一个不同的星球上找到一个人的体重,但是我对如何使用输入并将其乘以每个星球上的重力感到困惑。另外,我不确定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/

10-17 01:11