UIPickerView - 値を選択
説明
UIPickerViewはUIViewのサブクラス
ちなみに,UIDatePickerはUIPickerViewを利用している.
UIDatePickerについては
ソースコード
UIPickerViewSample.swift
import UIKit class UIPickerViewSample: UIView, UIPickerViewDelegate, UIPickerViewDataSource { var data: [[String]] = [ ["AAA", "SSS", "DDD", "FFF"], ["1", "2", "3"], ["A", "B", "D", "E", "F", "G"]] override init(frame: CGRect) { super.init(frame: frame) let pv = UIPickerView(frame: CGRectMake(0, 0, 200, 40)) self.addSubview(pv) pv.center = self.center pv.delegate = self pv.dataSource = self // 初期値 pv.selectRow(2, inComponent: 0, animated: true) pv.selectRow(1, inComponent: 1, animated: true) pv.selectRow(5, inComponent: 2, animated: true) } required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return data.count } // データ数 func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return data[component].count } // セルをビューで表示 func pickerView(pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusingView view: UIView!) -> UIView { let label = UILabel(frame: CGRectMake(0, 0, pickerView.frame.width/CGFloat(data.count), 44)) label.textColor = colorPattern.main() label.text = data[component][row] as String label.textAlignment = NSTextAlignment.Center return label } /* // セルの値だけを表示 (デフォルトのデザイン) func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String { return data[component][row] as String }*/ // 選択された時 func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { println("selected: \(row), \(data[component][row])") } }
ViewController.swift
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = colorPattern.back() self.view.addSubview(UIPickerViewSample(frame: self.view.frame)) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }