Swift

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)
    }
}
原文地址:https://www.cnblogs.com/baidaye/p/9183328.html