そして今回の全てのソースはこちら。
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
@IBOutlet weak var ageTextField: UITextField!
//ピッカービュー
var pickerView: UIPickerView = UIPickerView()
//120までの数字を格納した配列
var list = Array(0...120)
override func viewDidLoad() {
super.viewDidLoad()
pickerView.delegate = self
pickerView.dataSource = self
textFieldをタップしたときにピッカービューが表示されるように変更
textField.inputView = pickerView
}
//表示する列の数
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
//表示する数
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
//今回は120個
return list.count
}
//最初に表示される数字
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String {
0〜120までの数字
return list[row]
}
//選択された時
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.textField.text = list[row]
}
それぞれ説明します。
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
pickerViewを使用する際に、UIPickerViewDelegateとUIPickerViewDataSourceを使います。
なので作成したいクラスに上記を付け加えてください。
多分何も手を加えていなければ、初期状態はこんな感じだと思います。
class ViewController: UIViewController
そこにUIPickerViewDelegateとUIPickerViewDataSourceを加えてください。
上記をつけた後にピッカービューの設定を加えていき
var pickerView: UIPickerView = UIPickerView()
pickerView.delegate = self
pickerView.dataSource = self
次にtextFieldをタップしたときにpickerViewが表示されるように変更します
textField.inputView = pickerView
もしtextFieldをOutlet接続してないと言う方はtextFieldをOutlet接続してください。
やり方がわからないと言う方はこちらを参考に学習しましょう。
上記が完了したらpickerViewで必要な関数を加えていきます。
//表示列
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
//表示する数
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return list.count
}
//表示内容
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String {
return list[row]
}
//選択された時
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
self.textField.text = list[row]
}
上記の関数がないとエラーでビルドできません。
何か問題があればコメントをお願いします。