尝试使用在选择器中选择的索引值而不是选择器的值
Posted
技术标签:
【中文标题】尝试使用在选择器中选择的索引值而不是选择器的值【英文标题】:Attempting to use value of index selected in picker rather than value of picker 【发布时间】:2020-10-02 05:17:38 【问题描述】:我正在尝试弄清楚如何将选择器中的索引值用于方程式,而不是使用选择器的选定编号。我没有成功
以下是我的数组:
var wheelHeights = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70]
用户将通过选择器选择他们喜欢的离地高度。
然后我的代码会经过几个(实际上很多)if 语句部分,最后是我的问题...
var wheelHeightFactor: Double
let wheelFactor = Double(wheelHeight)
let densityWF = Double(densityWeightFactor)
if wheelFactor <= 21 && densityWeightFactor >= 2.9
let whf = Double((wheelFactor) * 0.2) + densityWeightFactor
return whf
我希望让这个等式中的 wheelHeight 成为选择器索引值,而不是实际的 wheelHeight。
以下是代码现在的作用:
let whf = Double((15) * 0.2) + densityWeightFactor
return whf
如果用户选择 15,就我的数字所在的位置而言,等式应该如下所示:
let whf = Double((3) * 0.2) + densityWeightFactor
return whf
提前谢谢大家
【问题讨论】:
你能澄清一下你的问题吗?您是在问“如何获取数组元素的索引”? 【参考方案1】:您必须创建一个单独的 @State
变量来跟踪实际索引:
考虑以下示例:
struct ContentView: View
let data = [1,5,10,20]
@State private var selectedIndex = 0
var body: some View
VStack
Text("Current index: \(selectedIndex)")
Picker("Your Selection", selection: $selectedIndex)
ForEach(0..<data.count) index in
Text("\(data[index])")
因此,如果我理解您的示例正确,那么您想使用实际索引而不是 wheelFactor
。如果是这样,你可以这样做:
@State private var selectedWheelHeightIndex = 0
//...
let whf = Double((selectedWheelHeightIndex) * 0.2) + densityWeightFactor
return whf
(我假设您使用的是 SwiftUI)...
【讨论】:
谢谢。抱歉……我正在使用 SwiftUI。你对我打算做什么的假设是正确的。我将尝试弄清楚如何应用您的答案。以上是关于尝试使用在选择器中选择的索引值而不是选择器的值的主要内容,如果未能解决你的问题,请参考以下文章