毎日が86400秒の残り時間

ビル・ゲイツのように計画実行のスピードを上げる

焦らず、しかし休まず、星のように己がまわりを巡れ
(ヨハン・ヴォルフガング・フォン・ゲーテ)

Swift UIPickerViewの使い方

ホイールをくるくる回して値を選ぶUIコントロールの「Picker」。

 

Xcode+Swift3での使い方が、いまいちよく分からない。

検索してサンプルを真似してみたけど、なんかうまく動かない。

 

参考情報

UIPickerView - UIKit | Apple Developer Documentation

 

011 UIPickerViewで値の選択 · GitBook

011 UIPickerViewで値の選択 - Swift Docs

 

swiftdev.blog.fc2.com

 

qiita.com

 

qiita.com

 

hajihaji-lemon.com

 

サンプル

Picker Viewによる選択 - swiftによるiOSアプリ開発入門

この記事を参考にして、Swift3で動作するよう、以下のように変更しました。

 

//
// ViewController.swift
// testPickerView
//

import UIKit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {

@IBOutlet weak var label1: UILabel!
@IBOutlet weak var pickerview1: UIPickerView!

var list = ["北海道","青森県","岩手県","宮城県","秋田県","山形県","福島県",
"茨城県","栃木県","群馬県","埼玉県","千葉県","東京都","神奈川県",
"新潟県","富山県","石川県","福井県","山梨県","長野県","岐阜県","静岡県","愛知県",
"三重県","滋賀県","京都府","大阪府","兵庫県","奈良県","和歌山県",
"鳥取県","島根県","岡山県","広島県","山口県","徳島県","香川県","愛媛県","高知県",
"福岡県","佐賀県","長崎県","熊本県","大分県","宮崎県","鹿児島県","沖縄県"]

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
pickerview1.dataSource = self
pickerview1.delegate = self
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


// Picker View の列数=1
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}

// Picker View の行数=リスト数
func pickerView(_ pickerview1: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return list.count
}

// Picker View に表示する文字列
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return list[row] // as? String
}

// Picker View で選択されたときに実行する処理
func pickerView(_ pickerview1: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
label1.text = list[row] + "の都道府県コードは" + String(row + 1) + "です。"
}

}

 

これで動いた。

 

f:id:nokorijikan:20170122195829p:plain

 

プロトコルで指定されているメソッド名が一部変更されている。

メソッドの引数の部分が一部変更されている。

 

他のサンプルコードも動かしてみて、いろいろ確認してみたい。