【Swift】年/月のPickerViewをInt型で作る
こんにちは、@nekokichi1_yos2です。
MoneyMonthで年と月だけのPickerViewを作る際、Data型で作る方法が見当たらず、仕方なくInt型で作りました。
Data型だと、どうしても日にちや時間を含めてしまい、〇〇だけを取得する方法がありません。
仮にData型で再利用するなら、Int→Data、に変換でもすればいいんじゃないでしょうか。
import UIKit class ViewController: UIViewController,UIScrollViewDelegate,UIPickerViewDelegate,UIPickerViewDataSource { @IBOutlet weak var textField: UITextField! var picker = UIPickerView() var toolbar = UIToolbar() //pickerView用で表示させる年と月の変数 let year = Array<Int>(2000...2050) let month = Array<Int>(1...12) //pickerViewで選択した年月を保持 var display_year = Int() var display_month = Int() override func viewDidLoad() { super.viewDidLoad() picker.delegate = self picker.dataSource = self //ツールバー toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35)) //空白(スペース) let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil) //完了ボタン let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done)) //空白と完了ボタンをツールバーにセット toolbar.setItems([spacelItem, doneItem], animated: true) //textFieldにpickerViewとtoolbarをセット textField.inputView = picker textField.inputAccessoryView = toolbar } func numberOfComponents(in pickerView: UIPickerView) -> Int { return 2 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { switch component { case 0: return year.count case 1: return month.count default: break } return 0 } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { switch component { case 0: return "\(year[row])" case 1: return "\(month[row])" default: break } return "" } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { //pickerViewで選択した値 display_year = year[pickerView.selectedRow(inComponent: 0)] display_month = month[pickerView.selectedRow(inComponent: 1)] //textFieldに表示 textField.text = "\(display_year)/\(display_month)" } @objc func done() { //キーボードを閉じる self.view.endEditing(true) } }