如何在 Swift 的 PickerView 中返回两个单独的数组
Posted
技术标签:
【中文标题】如何在 Swift 的 PickerView 中返回两个单独的数组【英文标题】:How to return Two Separate Array in PickerView in Swift 【发布时间】:2018-07-20 13:35:11 【问题描述】:我在SegmentControl
中创建了一个PickerView
,我有两个单独的数组FirstArray 有StringData
,第二个数组有NSNumber
数据。我需要返回两个数组,以便在同一行中以 StringData
和 Number 的形式返回。
For Example: First Array has : Ark,silk,temp etc, Second Array has 23,45,56 etc.
如果我在PickerView
中单独返回第一个数组,它会返回字符串值,但我需要显示两个数组。我已在选择器视图中显示一个数组,但不知道如何返回两个数组。
代码:
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int
if (pickerView == EventsPickerView)
// case EventsPickerView:
return EventArray.count
else
switch FabricSegmentControl.selectedSegmentIndex
case 0:
return globalConstants.ClassificationName.count
// return globalConstants.ClassificationName.count + globalConstants.ClassificationCount.count
case 1:
return globalConstants.ClassificationNameSecond.count
default:
return 1
// return 1
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
if (pickerView == EventsPickerView)
// case EventsPickerView:
return EventArray[row]
else
switch FabricSegmentControl.selectedSegmentIndex
case 0:
return globalConstants.ClassificationName[row] as? String
case 1:
return globalConstants.ClassificationNameSecond[row] as? String
default:
return "error occured"
// return "error occured"
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int)
if (pickerView == EventsPickerView)
eventTextField.text = EventArray[row]
else
switch FabricSegmentControl.selectedSegmentIndex
case 0:
TypeOfSilkTextField.text = globalConstants.ClassificationName[row] as? String
case 1:
TypeOfSilkTextField.text = globalConstants.ClassificationNameSecond[row] as? String
default:
break
这些是我的数组名称
First Array :globalConstants.ClassificationName.count
SecondArray name :globalConstants.ClassificationCount.count
【问题讨论】:
如果两个数组中的数据属于一起,为什么不创建一个包含字符串和数字的结构,或者使用一个元组,然后有一个结构(或元组)的单个数组?跨度> 我会试试这个并更新。 【参考方案1】:您将 NSNumber 作为字符串返回。这就是返回 nil 值的原因。 尝试将 NSNumber 转换为字符串。
【讨论】:
【参考方案2】:由于两个数组是相等的,所以在这里返回一个
return globalConstants.ClassificationName.count
//
在titleForRow
return globalConstants.ClassificationName[row] as? String ?? "" + ( globalConstants.ClassificationCount[row] as? String ?? "" )
//
在didSelectRow
TypeOfSilkTextField.text = globalConstants.ClassificationName[row] as? String ?? "" + ( globalConstants.ClassificationCount[row] as? String ?? "" )
但最好创建一个结构将它们作为一个单元保存
//
声明它有什么意义
static let ClassificationName = ["value","value2"]
这将被推断为字符串数组[String]
--- 到return ClassificationName[row]
和
static let ClassificationCount = [25,26]
这将被推断为整数数组 [Int]
--- 到 return "\(ClassificationCount[row])"
或者是
static let ClassificationCount = ["25","26"]
这将被推断为字符串数组[String]
--- 到return ClassificationCount[row]
【讨论】:
@V_rohit 根据您的问题,您将数组作为可选项附加任何以上是关于如何在 Swift 的 PickerView 中返回两个单独的数组的主要内容,如果未能解决你的问题,请参考以下文章
在pickerview(Swift 3,Xcode)中使(第一)行不可选择