How to use 2 UIPickerViews in the Same View Controller

My code below uses a UIPickerView and works perfectly. However I do not know how to repeat this process for 2 different picker views that each contain separate information. l2 and pl2 are the 2nd picker view and label. My code below does not work. Any ideas?

import UIKit
  class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate{

 @IBOutlet var l: UILabel!
@IBOutlet var pl: UIPickerView!
@IBOutlet var l2: UILabel!
@IBOutlet var pl2: UIPickerView!
override func viewDidLoad() {
pl.dataSource = self
pl.delegate = self
pl2.dataSource = self
pl2.delegate = self


let choices = ["1","2","3","4","5","6","7","8","9","10","11"]
let choices2 = ["1","judo","3","4","5","6","7","8","9","10","11"]

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

 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == pl {
    return choices[row]
} else if pickerView == pl2 {
    return choices2[row]
} else {
    return nil
  func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

 return choices.count
return choices2.count

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

if pickerView == pl {
     l.text = choices[row]
} else if pickerView == pl2 {
        l2.text = choices2[row]


Check your pickerView:numberOfRowsInComponent method. You need the same if statement you used in the other methods to determine which array to return the count.