UIPickerViewで入力内容を選択

例:テキストボックスtxtPlayerをクリックすると、UIPickerViewが表示される。「完了」ボタンを押すと選択された内容がテキストボックスに表示される。

class PlayerViewController: UIViewController {
    @IBOutlet var txtPlayer: UITextField!
    let pickerView = UIPickerView()
    let players = ["Mark", "Peter", "Jack"]

    override func viewDidLoad() {
        super.viewDidLoad()

        // set pickerView
        pickerView.delegate = self
        pickerView.dataSource = self
        let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
        let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
        let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(afterPickPlayer))
        toolbar.setItems([spacelItem, doneItem], animated: true)
        txtPlayer.inputView = pickerView
        txtPlayer.inputAccessoryView = toolbar
    }

    @objc func afterPickPlayer() {
        txtPlayer.endEditing(true)
        txtPlayer.text = "\(players[pickerView.selectedRow(inComponent: 0)].name)"
    }
}

extension PlayerViewController: UIPickerViewDelegate, UIPickerViewDataSource {
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return players.count
    }
    
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return players[row].name
    }
}