尝试使用在选择器中选择的索引值而不是选择器的值

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。你对我打算做什么的假设是正确的。我将尝试弄清楚如何应用您的答案。

以上是关于尝试使用在选择器中选择的索引值而不是选择器的值的主要内容,如果未能解决你的问题,请参考以下文章

如何处理jQuery选择器中的特殊符号

SwiftUI - 绑定到选择器的变量与选择器的选定值不匹配

不能在另一个日期选择器中更改日期选择器参数?

按键事件在日期选择器中不起作用

在 jQuery UI 日期选择器中在日期旁边显示附加文本

Matplotlib - 将 Xticks 更改为线上的值而不是数据点