一個選擇器視圖顯示一個或多個轉輪,用戶可以操控這些轉輪來選擇項目。每個轉輪(稱為組件)都有一系列代表可選項目的索引行。每行顯示一個字串或視圖,以便用戶可以識別該行上的項目。用戶通過將轉輪旋轉到所需的值(與選擇指示器對齊)來選擇項目。
使用選取器數據源(採用 UIPickerViewDataSource 協定的物件)提供要在選取器視圖中顯示的數據。使用選擇器視圖委任(採用 UIPickerViewDelegate 協定的物件)來提供用於顯示數據和響應用戶選擇的視圖。
先使 ViewController 採用 UIPickerViewDataSource 協定和 UIPickerViewDelegate
class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
    let originList = [
      "", "台北","板橋","桃園","新竹"]
    let finalList = [
    "", "台中","嘉義","台南", "左營"]
    
    var selectedOrigin = ""
    var selectedFinal = ""
}
在 viewDidLoad 中加入 delegate 及 datasource 設定,及 pickerView 屬性設定
override func viewDidLoad() {
        super.viewDidLoad()
        
        pickerView.delegate = self
        pickerView.dataSource = self
}
使用方法 numberOfComponents(in:) 設定 PickView 的轉輪數目為 2
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 2
    }
使用方法 pickerView(_:, numberOfRowsInComponent:) 分別設定第一個和第二個轉輪顯示的個數
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        // 第一個轉輪的 component 為 0
        if component == 0 {
            return originList.count
        }
        return finalList.count
}
使用方法 pickerView(_: UIPickerView, titleForRow: Int, forComponent: Int) 將數組的值放入轉輪中
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        
        if component == 0 {
            
            return originList[row]
        }
        
        return finalList[row]
    }
使用方法 pickerView(_: UIPickerView, didSelectRow: Int, inComponent: Int),選定兩個轉輪的值後輸出
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if component == 0 {
            selectedOrigin = originList[row]
        } else {
            selectedFinal = finalList[row]
        }
        
        if selectedOrigin != "" && selectedFinal != "" {
            print("Start from: \(selectedOrigin). End at: \(selectedFinal).")
        }
        
}
// Prints "Start from: 板橋. End at: 左營."
