如何解决创建一个矩阵视图供用户通过TextFieldSwiftUI输入数字
我想构建一个矩阵,用户可以在其中输入数字并进行计算。目前,我有这样的事情:
@State var dimension = 2
@State var matrixVals = [Double]()
ForEach(0..<dimension,id:\.self) { index in
HStack {
ForEach(0..<dimension,id:\.self) {i2 in
TextField("",text: Binding(
get: { if matrixVals.count > index*i2 { return String(matrixVals[index*i2]) } else { return "" }},set: { (newValue) in return self.matrixVals.append(Double(newValue) ?? 1.0) }
))
.background(Color.gray)
.frame(width: 35 - CGFloat(dimension*3),height: 55 - CGFloat(dimension*3),alignment: .center)
.padding(.horizontal,12 - CGFloat(dimension))
.padding(.vertical,0 - CGFloat(dimension/2))
}
}
}
可以通过按按钮来增加/减少尺寸,因此它应该是动态的。这是我在第一个块上输入7后得到的结果(它将其复制到第一列和行中的每个块)。知道我哪里出错了(我认为这很可能与我滥用index和i2作为索引有关)?
任何建议都值得赞赏!
解决方法
零乘以任何数字仍为零。您的错误在这里:
index*i2
相反,请尝试以下操作:
index*dimension + i2
此外,您可以考虑使用二维数组(也称为数组数组)。这可以使事情变得容易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。