【问题标题】:SwiftUI - variable bound to picker does not match selected value of the pickerSwiftUI - 绑定到选择器的变量与选择器的选定值不匹配
【发布时间】:2020-08-25 17:47:01
【问题描述】:

在此代码中,repDuration 是一个 int,每当我在选择器中选择一个值时,repDuration 将是相同的值减 1,尽管标签等于数字。当我将 repDuration 设为 String 而不是 Int 时,问题就消失了,如果我想将 repDuration 保留为 Int,有人可以解释如何让值匹配吗?

Picker("Duration", selection: self.$item.repDuration) {
         ForEach(1..<366) { number in
            Text("\(number)").tag(number)
         }
}

【问题讨论】:

    标签: foreach swiftui picker


    【解决方案1】:

    您需要您的迭代器符合 .Identifiable 协议,或者在 ForEach 调用中指定一个 id,如下所示:

    Picker("Duration", selection: self.$item.repDuration) {
         ForEach(1..<366, id: \.self) { number in
            Text("\(number)").tag(number)
         }
    }
    

    否则,swift 将返回您的范围序列的索引,而不是值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2020-05-22
      • 2012-06-22
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      相关资源
      最近更新 更多