【Swift】PickerView&DatePickerの使い方

 

完成図

 

↓”現在時刻”を押した場合         ↓”10分後へ”を押した場合

f:id:nekokichi_yos2:20181009142100p:plain
f:id:nekokichi_yos2:20181009142118p:plain

 

解説

 

「DatePicker」

・日時を扱うなら絶対にこれ

・NSDate()や正確な日時を指定するのに必要な処理を省略できる

・現在時刻をdatePicker.date = Date()だけで取得できる手軽さ

・??分後に移動する場合は、datePicker.date=Date(60(秒)*??(分))、だけでOK

 

「PickerView」

・構造はセルと同じ

・numberOfConponents, numberOfRowsInConponent, titleForRowは、セルが用意するnumberOfSection, numberRowInSection, cellForAt、と似ている

・異なる処理や値を設定したPickerViewの配置は困難。

・1つのPickerViewで値や処理を変えればいい

 

ストーリーボード

 

f:id:nekokichi_yos2:20181009141951p:plain

 

ソースコード

 

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]
    }

}