在双组件 pickerView 中查找两个变量

Finding both variables in a two component pickerView

我找不到任何地方解释如何从 pickerView 的两个组件获取信息。现在它所做的只是将最后移动的组件中的字符串放入测试标签中。我真的不需要它们出现在网点中,而只是可以访问它们。我也想用我注释掉的数组格式

@IBOutlet weak var itemPickerView: UIPickerView!

var pickerViewArray = [["Items", "Key", "Rock"], ["Action", "Turn", "Hit"]]

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return pickerViewArray.count
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return pickerViewArray[component].count
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return pickerViewArray[component][row]
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    itemSelected = pickerViewArray[component][row]
    pickerOutletTest.text = itemSelected
}

@IBOutlet weak var pickerOutletTest: UILabel!

您可以通过

获取所有组件中选中项的数组
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    let selectedItems = (0..<pickerViewArray.count).map{  pickerViewArray[[=10=]][pickerView.selectedRow(inComponent: [=10=])]}
    print(selectedItems)
}

map组件索引与其选定值的 ping 是

的缩写形式
var selectedItems = [String]()
for component in 0..<pickerViewArray.count {
    let selectedRow = pickerView.selectedRow(inComponent: component)
    selectedItems.append(pickerViewArray[component][selectedRow])
}

将您的 didSelectRow 方法更改为以下方法。

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
     pickerOutletTest.text = pickerViewArray[0][pickerView.selectedRow(inComponent: 0)] + " " + pickerViewArray[1][pickerView.selectedRow(inComponent: 1)]
}