【Swift】PickerView&DatePickerの使い方
完成図
↓”現在時刻”を押した場合 ↓”10分後へ”を押した場合
解説
「DatePicker」
・日時を扱うなら絶対にこれ
・NSDate()や正確な日時を指定するのに必要な処理を省略できる
・現在時刻をdatePicker.date = Date()だけで取得できる手軽さ
・??分後に移動する場合は、datePicker.date=Date(60(秒)*??(分))、だけでOK
「PickerView」
・構造はセルと同じ
・numberOfConponents, numberOfRowsInConponent, titleForRowは、セルが用意するnumberOfSection, numberRowInSection, cellForAt、と似ている
・異なる処理や値を設定したPickerViewの配置は困難。
・1つのPickerViewで値や処理を変えればいい
ストーリーボード
ソースコード
import UIKit class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { @IBOutlet weak var datePicker: UIDatePicker! @IBOutlet weak var textPicker: UIPickerView! let text:[String] = ["1","2","3","4","5","6"] override func viewDidLoad() { super.viewDidLoad() textPicker.delegate = self textPicker.dataSource = self // Do any additional setup after loading the view, typically from a nib. } //DatePickerのメソッド @IBAction func nowDate(_ sender: Any) { datePicker.date = Date() } @IBAction func laterDate(_ sender: Any) { datePicker.date = Date(timeInterval: 60*10, since: datePicker.date) } @IBAction func beforeDate(_ sender: Any) { datePicker.date = Date(timeInterval: -60*10, since: datePicker.date) } //PickerViewのメソッド func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return text.count } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return text[row] } }