import UIKit class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { var pickerView:UIPickerView! override func viewDidLoad() { super.viewDidLoad() pickerView = UIPickerView() pickerView.dataSource = self pickerView.delegate = self pickerView.selectRow(1, inComponent: 0, animated: true) pickerView.selectRow(2, inComponent: 1, animated: true) pickerView.selectRow(3, inComponent: 2, animated: true) self.view.addSubview(pickerView) let button = UIButton(frame: CGRect(x: 0, y: 0, 100, height: 30)) button.center = self.view.center button.backgroundColor = UIColor.blue button.setTitle("获取信息", for:.normal) button.addTarget(self, action: #selector(ViewController.getPickerValue), for: .touchUpInside) self.view.addSubview(button) } //设置选择框的列数为3列,继承于UIPickerViewDataSource协议 func numberOfComponents(in pickerView: UIPickerView) -> Int { return 3 } //设置选择框的行数为9行,继承于UIPickerViewDataSource协议 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return 9 } //设置选择框各选项的内容,继承于UIPickerViewDelegate协议 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return String(row)+"-"+String(component) } //设置列宽 func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat { if component==0 {//第一列变宽 return 80 }else{//其他变窄 return 50 } } //设置行高 func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { return 50 } //任意UIView类型的元素 func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { var pickerLabel = view as? UILabel if pickerLabel == nil{ pickerLabel = UILabel() pickerLabel?.font = UIFont.systemFont(ofSize: 13) pickerLabel?.textAlignment = .center } pickerLabel?.text = String(row) + "-" + String(component) pickerLabel?.textColor = UIColor.blue return pickerLabel! } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { print(component,row) } @objc func getPickerValue(){ let message = String(pickerView.selectedRow(inComponent: 0))+"-" + String(pickerView.selectedRow(inComponent: 1))+"-" + String(pickerView.selectedRow(inComponent: 2)) let alertController = UIAlertController(title: "被选中的索引为", message: message, preferredStyle: .alert) let okAction = UIAlertAction(title: "ok", style: .default, handler: nil) alertController .addAction(okAction) self.present(alertController, animated: true, completion: nil) } }