来自元组数组的 UIPicker
Posted
技术标签:
【中文标题】来自元组数组的 UIPicker【英文标题】:UIPicker from Array of Tuples 【发布时间】:2016-09-05 14:13:51 【问题描述】:如何加载带有元组数组的 UIPickerView?
使用以下代码,我只能在 UIPickerView 中看到 Oregon: 9.0
。
let myArrayTuple: [(String, Double)] = [("Illinois", 7.0), ("Wisconsin", 8.0), ("Oregon" ,9.0)]
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
var stateName:String?
var stateTax:Double?
for (name , tax) in myArrayTuple
stateName = name
stateTax = tax
return stateName! + ": \(stateTax!)"
编辑:你是这样做的:查看Shadow Of
的回答
在下面的示例中,我使用命名元组而不是 Shadow Of
s 示例中的默认值。
let myArrayTuple: [(name:String, tax:Double)] = [("Illinois", 7.0), ("Wisconsin", 8.0), ("Oregon" ,9.0)]
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
let stateName = myArrayTuple[row]
return stateName.name + ": \(stateName.tax)"
【问题讨论】:
你不使用参数row
也不是component
?
天哪,抱歉有点累。看代码,你会看到for循环只保存数组的最后一个数据。
【参考方案1】:
这就是你应该如何使用你的UIPickerView
,我猜:
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
return myArrayTuple.count
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int
return 1
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
let current = myArrayTuple[row]
return current.0 + ": \(current.1)"
【讨论】:
这是一个简单的数组,我的是一个array of tuples
。
@fs_tigre 这是在你的帖子中声明的[(String, Double)]
数组
@fs_tigre 请注意,您使用默认占位符 0
和 1
访问元组 current
的元素
我的错,这正是你这样做的方式。另外,感谢您指出占位符,我最终命名了我的元组以使其更具可读性(请参阅我编辑的问题)。非常感谢您的帮助。【参考方案2】:
您有一个与for loop
理解有关的问题。
for (name , tax) in myArrayTuple
stateName = name
stateTax = tax
你从 0 元素到 2 并且在每次迭代中你设置新值并且不返回它。
循环结束后,您只能看到案例 2 中最后一个元素的最后一个值。
【讨论】:
我知道 for 循环是如何工作的,但我不确定如何使用它来迭代array of tuples
。谢谢
您只需要返回正确的项目即可。没问题好问题。以上是关于来自元组数组的 UIPicker的主要内容,如果未能解决你的问题,请参考以下文章