【发布时间】:2021-04-29 06:03:45
【问题描述】:
我希望用户通过选择器选择他的身高。然后想以英寸或厘米为单位将用户的身高记录到我的 ContenvtView 结构中的 Double 变量中。但是,不能为我的@Binding Double 分配任何值。 Xcode 在标题上大喊大叫,或者说我不能将 Double 分配给 Binding。我错过了什么?代码如下:
结构高度选择器:查看 {
@State var foot = 0.0
@State var inch = 0.0
@State var meter = 0.0
@State var cm = 0.0
@State var measurement = ""
@Binding var metric: Bool
@Binding var height: Double
var feet = [Int](0..<10)
var inches = [Int](0..<12)
var meters = [Int](0..<3)
var cms = [Int](0..<100)
var measurements = ["in", "cm" ]
var body: some View{
VStack{
GeometryReader() { geometry in
HStack {
if(metric == false) {
Picker(selection: self.$foot, label: Text("")) {
ForEach(0 ..< self.feet.count){ index in
Text("\(self.feet[index])").tag(self.feet[index])
}
}
.frame(width: geometry.size.width/4,height: geometry.size.height, alignment: .center)
.clipped()
.scaleEffect(CGSize(width: 1.0, height: 1.0))
.pickerStyle(WheelPickerStyle())
.scaledToFit()
.background(Color.white)
Text("\"")
Picker(selection: self.$inch, label: Text("")) {
ForEach(0 ..< self.inches.count){ index in
Text("\(self.inches[index])").tag(self.inches[index])
}
}
.frame(width: geometry.size.width/4,height: geometry.size.height, alignment: .center)
.clipped()
.scaleEffect(CGSize(width: 1.0, height: 1.0))
.pickerStyle(WheelPickerStyle())
.scaledToFit()
.background(Color.white)
var heightInches = (self.foot * 12) + self.inch
Text("'")
self.$height = heightInches
} else if(metric == true) {
Picker(selection: self.$meter, label: Text("")) {
ForEach(0 ..< self.meters.count){ index in
Text("\(self.meters[index])").tag(self.meters[index])
}
}
.frame(width: geometry.size.width/4, height: geometry.size.height, alignment: .center)
.scaleEffect(CGSize(width: 1.0, height: 1.0))
.clipped()
.pickerStyle(WheelPickerStyle())
.scaledToFit()
.background(Color.white)
Text("m")
Picker(selection: self.$cm, label: Text("")) {
ForEach(0 ..< self.cms.count){ index in
Text("\(self.cms[index])").tag(self.cms[index])
}
}
.frame(width: geometry.size.width/4,height: geometry.size.height, alignment: .center)
.clipped()
.scaleEffect(CGSize(width: 1.0, height: 1.0))
.pickerStyle(WheelPickerStyle())
.scaledToFit()
.background(Color.white)
Text("cm")
}
}
}.frame(height: 45)
}
.frame(height: 45)
.padding(.top,5)
.padding(.bottom, 5)
}
}
}
【问题讨论】:
-
self.height = heightInches呢?