如何设置选择器视图以显示来自多个矩阵选项的数据?

时间:2017-07-20 00:38:32

标签: arrays swift uipickerview

我在视图控制器中有4个文本字段,它们将使用单个PickerView,但根据哪个文本字段处于活动状态进行更新(通过编辑确实开始操作)。我可以从单个测试数组加载数据,但无法找到一种方法让拾取器视图在几个预先加载了从Parse查询的数据的数组之间切换。

另外,有没有办法从字符串中引用数组名称?例如:替换" testArray"使用didSelectRow函数中的变量并在文本字段变为活动时设置变量。

谢谢!

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

    if activeField == 1 {

        return fieldNameArray[row]

    } else if activeField == 2 {

        return taskCategoryArray[row]

    } else if activeField == 3 {

        return assignedPersonArray[row]

    } else if activeField == 4 {

        return machineUsedArray[row]
    }


    //return testArray[row]

}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

    if activeField == 1 {

        return fieldNameArray.count

    } else if activeField == 2 {

        return taskCategoryArray.count

    } else if activeField == 3 {

        return assignedPersonArray.count

    } else if activeField == 4 {

        return machineUsedArray.count
    }


    //return testArray.count

}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

    if activeField == 1 {

        fieldNameTextField.text = testArray[row]

    } else if activeField == 2 {

        taskCategoryTextField.text = testArray[row]

    } else if activeField == 3 {

        assignedPersonTextField.text = testArray[row]

    } else if activeField == 4 {

        machineryUsedTextField.text = testArray[row]
    }

    pickerView.isHidden = true
}

1 个答案:

答案 0 :(得分:0)

我不理解你问题的第二部分。

但是对于第一部分,你几乎就在那里,当你的一个文本视图变为活动状态时,你只需要重新加载选择器视图:

pickerView.reloadAllComponents()