【Swift3】【UIPikerView】を下からにゅっと出す。

昔の記事UIPickerViewも下から出す。 | iPhoneアプリ備忘録のSwift3版かな?

参考サイト
011 UIPickerViewで値の選択 · GitBook
閉じるボタンは前回の記事参照。

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()
    }
}

あちこちからのコピペがまるわかり。(^_^;)
一応こんな感じで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です