How to make first picker view row unselectable

Hi to you all, I am new in iOS development and in a making of an app. I am using uitextfield connected with uipickerview in the home screen. Is there somehow a way to make it when I choose the text field the picker view to popup with the first option whitch is (lets say...) "--" whitch is unchoosable. And 2 other options whitch when clicked take me to to other view controllers.

This is my code:

import UIKit

class ViewController: UIViewController {
Code Block
let options = ["--", "option 1", "option 2"]
var identities = [nil, "table_vc_teacher", "table_vc"]
@IBOutlet weak var optionsField: UITextField!
var picker = UIPickerView()
@IBAction func didTuchBtn(_ sender: Any) {
let vc = storyboard?.instantiateViewController(identifier: "table_vc") as! TableViewController
vc.navigationItem.largeTitleDisplayMode = .never
navigationController?.pushViewController(vc, animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
picker.delegate = self
picker.dataSource = self
optionsField.inputView = picker
optionsField.textAlignment = .center
optionsField.placeholder = "Избери Програма"
}
}


// Picker View
extension ViewController: UIPickerViewDelegate, UIPickerViewDataSource {
Code Block
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return options[row]
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return options.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if (row == 0) {
}
optionsField.text = options[row]
optionsField.resignFirstResponder()
let vcName = identities[row]
let viewController = storyboard?.instantiateViewController(identifier: vcName!)
viewController?.navigationItem.largeTitleDisplayMode = .never
self.navigationController?.pushViewController(viewController!, animated: true)
}
}


The "var identities" are the storyboard identifiers for my other view controllers (This was from a video for table views but I toth to implement them in this code here). I am asking the question for a new ideas on how to make my code doing the stuff I described at the start.

I really need help! Please!

Answered by DaFlyingDuchman in 662967022
I managed to help my self!

This was the code of the picker view did select row:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
optionsField.text = options[row]
optionsField.resignFirstResponder()

let vcName = identities[row]
let viewController = storyboard?.instantiateViewController(identifier: vcName!) viewController?.navigationItem.largeTitleDisplayMode = .never self.navigationController?.pushViewController(viewController!, animated: true)}


And this is the code now:


if row == 0 {
color = UIColor.red
let alert = UIAlertController(title: "Error", message: "Please Choose Something", preferredStyle: UIAlertController.Style.alert)
Code Block
} else if row == 1 {
let vcOne = storyboard?.instantiateViewController(identifier: "table_vc_teacher") as! TeacherViewController
vcOne.navigationItem.largeTitleDisplayMode = .never
self.navigationController?.pushViewController(vcOne, animated: true)
} else if row == 2 {
let vcTwo = storyboard?.instantiateViewController(identifier: "table_vc") as! TableViewController
vcTwo.navigationItem.largeTitleDisplayMode = .never
self.navigationController?.pushViewController(vcTwo, animated: true)
}


And I removed the identities var from the above code.

Hope this helps someone!
Accepted Answer
I managed to help my self!

This was the code of the picker view did select row:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
optionsField.text = options[row]
optionsField.resignFirstResponder()

let vcName = identities[row]
let viewController = storyboard?.instantiateViewController(identifier: vcName!) viewController?.navigationItem.largeTitleDisplayMode = .never self.navigationController?.pushViewController(viewController!, animated: true)}


And this is the code now:


if row == 0 {
color = UIColor.red
let alert = UIAlertController(title: "Error", message: "Please Choose Something", preferredStyle: UIAlertController.Style.alert)
Code Block
} else if row == 1 {
let vcOne = storyboard?.instantiateViewController(identifier: "table_vc_teacher") as! TeacherViewController
vcOne.navigationItem.largeTitleDisplayMode = .never
self.navigationController?.pushViewController(vcOne, animated: true)
} else if row == 2 {
let vcTwo = storyboard?.instantiateViewController(identifier: "table_vc") as! TableViewController
vcTwo.navigationItem.largeTitleDisplayMode = .never
self.navigationController?.pushViewController(vcTwo, animated: true)
}


And I removed the identities var from the above code.

Hope this helps someone!
O and this is still there too:

optionsField.text = options[row]
optionsField.resignFirstResponder()

for the textfield.
How to make first picker view row unselectable
 
 
Q