0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

テキストフィールドにピッカービューを設定してリスト選択する方法

Posted at

今回作成するものはこちら
 
スクリーンショット 2021-08-26 21.12.35.png

そして今回の全てのソースはこちら。

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]
}

上記の関数がないとエラーでビルドできません。
 

何か問題があればコメントをお願いします。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?