import UIKit
class ViewController: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {
// UIPickerView.
private var myUIPicker: UIPickerView!
// 表示する値の配列.
private let myValues: NSArray = ["その一","その二","その三","その四"]
//テキストフィールドを作ってoutlet接続
@IBOutlet weak var testTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// UIPickerViewを生成.
myUIPicker = UIPickerView()
// Delegateを設定する.
myUIPicker.delegate = self
// DataSourceを設定する.
myUIPicker.dataSource = self
// testTextFieldのdelegateを設定する。
testTextField.delegate = self
// 閉じるボタンのツールバー生成
let kbToolBar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 320, height: 40))
kbToolBar.barStyle = UIBarStyle.default // スタイルを設定
kbToolBar.sizeToFit() // 画面幅に合わせてサイズを変更
// スペーサー
let spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: self, action: nil)
// 閉じるボタン
let commitButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(ViewController.commitButtonTapped))
kbToolBar.items = [spacer, commitButton]
testTextField.inputView = myUIPicker
testTextField.inputAccessoryView = kbToolBar
}
//閉じるボタンが押されたらキーボードを閉じる
func commitButtonTapped (){
self.view.endEditing(true)
}
//PickerViewのコンポーネント(縦)の数を決めるメソッド(実装必須)
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
//pickerに表示する行数(横)を返すデータソースメソッド.(実装必須)
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return myValues.count
}
//pickerに表示する値を返すデリゲートメソッド.
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return myValues[row] as? String
}
//pickerが選択された際に呼ばれるデリゲートメソッド.
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
testTextField.text = "\(myValues[row])"
print("row: \(row)")
print("value: \(myValues[row])")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}