Search code examples
iosarraysswiftuipickerview

How to Force PickerView to default to array item [0]


I have been searching SO for two days now trying to find an answer to this. I may not even be asking the question correctly so forgive me if that is so.

I want my data picker to default to the [0]th item of the data source array for that textField. Currently, I can see no consistency as to how the selected array item is chosen when the pickerView is loaded. I have a blank ("") as the first item in the arrays with the thought that the user would see a blank as the default item in the pickerView with all other items following that.

How can I force the pickerView to show the "" in the array (the [0]th item in each array) as the default selected value when the pickerView loads and is shown to the user?

Here is the code for the pickerViews:

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

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return self.activeDataArray.count
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
    return self.activeDataArray[row] as! String
}

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if activeDataArray == personnelName {
        enterPersonnelName.text = personnelName[row] as String
    }
    else if activeDataArray == drugID {
        enterDrugID.text = drugID[row] as String
    }
    else if activeDataArray == packageNumber {
        enterPackageNumber.text = packageNumber[row] as String
        enterQty.text = quantity[0]
        enterExpDate.text = expDate[0]
    }
    //put pickerView away
    self.view.endEditing(true)
}

Edit: Code to invoke the pickerView

func textFieldDidBeginEditing(textField: UITextField) {
    activeDataArray == [] //clear out the clicked field data array
    if textField == enterPersonnelName {
        activeDataArray = personnelName
    } else
        if textField == enterDrugID {
            activeDataArray = drugID
    } else
        if textField == enterPackageNumber {
            activeDataArray = packageNumber
    } else
        if textField == enterQty {
            activeDataArray = quantity
    } else
        if textField == enterExpDate {
            activeDataArray = expDate
    }
    dataPickerView.reloadAllComponents() //clear out components of the dataPickerView
    dataPickerView.hidden = false
}

Solution

  • Selecting Rows in the View Picker

    override func viewDidLoad() {
        super.viewDidLoad()
        pickerView.delegate = self
        pickerView.selectRow(0, inComponent: 0, animated: false)
    }