Múltiples vistas de selector con múltiples vistas de entrada de campo de texto Swift

He estado buscando en el foro y nada me ha ayudado. Estoy usando 4 campos de texto en un controlador de vista, y para cada campo de texto, estoy usando un selector selectView como inputViews para textFields (4pickers).

Cuando hago clic en el primer campo de texto, pickerView1 aparece con éxito y el campo de texto muestra los datos, sin embargo, cuando hago clic en el segundo, tercer y cuarto campos de texto, aparece el primer pickerView. Sospecho que el error radica en las declaraciones inputView.

Y agradecería mucho si pudiera ayudar a agregar un botón "hecho" al selector de vista.

Mi código:

class ViewController1: UIViewController, UIPickerViewDelegate
{

    @IBOutlet var pickerView1: UIPickerView!
    @IBOutlet var pickerView2: UIPickerView!
    @IBOutlet var pickerView3: UIPickerView!
    @IBOutlet var pickerView4: UIPickerView!

    @IBOutlet var textField1: UITextField!
    @IBOutlet var textField2: UITextField!
    @IBOutlet var textField3: UITextField!
    @IBOutlet var textField4: UITextField!

    var hazards = ["a","b", "c"]
    var reasons = ["d", "e", "f"]
    var site = ["v","h","i","j"]
    var line = ["k", "l","m", "n"]

    override func viewDidLoad() {

        super.viewDidLoad()
        pickerView1 = UIPickerView()
        pickerView2 = UIPickerView()
        pickerView3 = UIPickerView()
        pickerView4 = UIPickerView()
        pickerView1.delegate = self
        pickerView2.delegate = self
        pickerView3.delegate = self
        pickerView4.delegate = self

        self.textField1.inputView = self.pickerView1;
        self.textField2.inputView = self.pickerView2;
        self.textField3.inputView = self.pickerView3;
        self.textField4.inputView = self.pickerView4;
    }

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

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

        if pickerView.tag == 0 {
            return hazards.count
        } else if pickerView.tag == 1 {
            return reasons.count
        } else if pickerView.tag == 2 {
            return  site.count
        } else if  pickerView.tag == 3 {
            return line.count
        }
        return 1
    }

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

        if pickerView.tag == 0 {
            return hazards[row]
        } else if pickerView.tag == 1 {
            return reasons[row]
        } else if pickerView.tag == 2 {
            return site[row]
        } else if pickerView.tag == 3 {
            return line[row]
        }

        return ""
    }

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

        if pickerView.tag == 0 {
            textField1.text = hazards[row]
        } else if pickerView.tag == 1 {
            textField2.text = reasons[row]
        } else if pickerView.tag == 2 {
            textField3.text = site[row]
        } else if pickerView.tag == 3 {
            textField4.text = line[row]
        }
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta