【问题标题】:picker view generate number 20 to 80选择器视图生成数字 20 到 80
【发布时间】:2020-07-03 00:41:24
【问题描述】:

如何创建生成 20 到 80 数字的代码?使用pickerviewlet年龄= [“20”,“21”,“22”,“23”,“24”,“25”,“26”,“27”,“28”,“29”,“30”, "31","32","33","34","35","36","37","38","39","40","41","42","43 ”、“44”、“45”、“46”、“47”、“48”、“49”、“50”] 我目前有这个,但我想知道是否有一种方法可以将它扩展到 80 而不需要这么多文本

【问题讨论】:

  • 使用带 Int 的 for 循环。然后将每个数字转换成一个字符串。

标签: swift xcode pickerview


【解决方案1】:

您可以使用范围创建数组:

let ages = (20...80).map { "\($0)" }

map 调用将每个数字转换为字符串。


更好的选择是不要将所有年龄存储在内存中的数组中。请注意,行号 + 20 等于您要在选择器视图的该行显示的年龄。所以你可以像这样实现选择器视图方法:

var selectedAge: Int?
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    61 // there are 61, not 60, numbers from 20 to 80!
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    "\(row + 20)" // for row 0, the row says 20, for row 1, it says 21, for row 2, it says 22, and so on
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    // calculate the selected age using the same formula
    selectedAge = row + 20
}

【讨论】:

  • 您也可以使用 description 属性作为 KeyPath (Swift 5.2)。 (20...80).map(\.description)
  • @LeoDabus 是的,但我个人喜欢字符串插值的外观和感觉。我认为它更生动地展示了从20"20" 的转变。 :)
  • 我通常尽可能避免使用闭包。我想在这种情况下我会通过String.init
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 1970-01-01
  • 2013-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多