pickerview1

【swift】ピッカービュー(pickerview)、ドラムロールの使い方

pickerview1

 iphoneやiPadで、決められた内容から選択して、入力する際、クルクル回転するピッカービュー(ドラムロール)は便利ですよね。今回は、ピッカービューのプログラムの使い方をご紹介したいと思います。

完成形のイメージ

 今回ご紹介するコードで出来上がった完成形を動画にしました。また、全コードは、ページの最後に載せています。

1. ストーリーボードにパーツを準備

 まず、ストーリーボードに【UILabel】【UIPickerView】【Button】を配置して下さい。そして、それぞれをコードにつなぎます。

 【Button】をタップすると、pickerViewが表示されるだけのコードを記述しています。

ストーリーボードにパーツを準備
    @IBOutlet weak var label: UILabel!
    
    @IBOutlet weak var pickerView: UIPickerView!



    @IBAction func button(_ sender: Any) {
        
        pickerView.isHidden = false
    }

2. デリゲートとデータソース

  1. classにデリゲート(UIPickerViewDelegate)とデータソース(UIPickerViewDataSource)を記述し、vewDidLoadにselfで指定して下さい。
  2. pickerViewに表示したい内容を、dateList内に配列として記述します。
  3. label.text = “1.0” で、Labelの初期値を1.0と指定しています。
  4. buttonをタップするとpickerVIewが表示されるようにしたいので、最初はpickerView.isHidden = true として、非表示にします。
import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
    
    @IBOutlet weak var label: UILabel!
    
    @IBOutlet weak var pickerView: UIPickerView!
    
    let dataList = [
        "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1.0"
    ]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        pickerView.delegate = self
        pickerView.dataSource = self
        label.layer.zPosition = 1
        
        label.text = "1.0"
        pickerView.isHidden = true
    }

3. PickerViewの列の数を指定

 1列を指定しています。

  func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

4. PickerViewの行数を指定

 行数は、dataListの個数分欲しいので、dateListのcount分を指定しています。

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return dataList.count
    }

5. 表示する内容を指定

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return dataList[row]
    }

6. 処理の指定

 PickerViewによって行を選択すると、呼び出されるメソッド。dataListのrow番目の値をlabel.textに反映し、その後、pickerViewを非表示にしています。

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        label.text = dataList[row]
        pickerView.isHidden = true
    }

7. 画面タップでピッカービューを閉じる。

touchesBeganは便利なメソッドです。画面をタップすると、{ }カッコ内のコードが実行されます。今回は、画面をタップすると、pickerViewを非表示にするコードを記述しています。

  override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        pickerView.isHidden = true
        
    }

 

全コード

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
    
    @IBOutlet weak var label: UILabel!
    
    @IBOutlet weak var pickerView: UIPickerView!
    
    let dataList = [
        "0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9", "1.0"
    ]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        pickerView.delegate = self
        pickerView.dataSource = self
        label.layer.zPosition = 1
        
        label.text = "1.0"
        pickerView.isHidden = true
    }
    
    
    
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return dataList.count
    }
    
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        return dataList[row]
    }
    
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        label.text = dataList[row]
        pickerView.isHidden = true
    }

    @IBAction func button(_ sender: Any) {
        
        pickerView.isHidden = false
    }
    
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        pickerView.isHidden = true
        
    }
    
}

 キーボードにピッカービューを反映させる方法は下記リンクをご参考下さい。
【swift】

ツールバー付きピッカービュー(pickerview)、ドラムロールの使い方

pickerview2

pickerview1
最新情報をチェックしよう!