如何在同一个视图控制器中使用2个UIPickerViews?

时间:2017-07-19 15:08:51

标签: ios swift datasource uipickerview

我的下面的代码使用UIPickerView并且效果很好。但是我不知道如何为2个不同的选择器视图重复此过程,每个视图都包含单独的信息。 l2pl2是第二个选择器视图和标签。

    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() {
    super.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]
    }
}

}

2 个答案:

答案 0 :(得分:2)

您在委托方法中引用了UIPickerView,因此您可以执行以下代码:

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    if(pickerView == pl) {
      //pl specific code
    }
    if(pickerView == pl2) {
       //pl2 specific code
    }
}

为每种方法都这样做。

答案 1 :(得分:1)

您还必须将ViewController设置为DataSourceDelegate pl2,并在您应该过滤{{1}的委托和数据源方法中}}

UIPickerView
相关问题