blog

プログラミングとひとりごと。

UIPickerViewを使う

Swift4 Xcode9.2

 

UIPickerViewを使って、値を選択できるようにする

 

i-app-tec.com

 

以下、書いたコード(関係あるところは青色にしてます)

 

class MsgFirstViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource {

 

    @IBOutlet weak var picker: UIPickerView!

    @IBOutlet weak var yearLabel: UILabel!

    @IBOutlet weak var dateLabel: UILabel!

    

    let posts = ["おひつじ", "おうし", "ふたご", "かに", "しし", "おとめ", "てんびん", "いて", "やぎ", "みずがめ", "うお"]

    

    var mystarInt: Int = 6

    var mystarStr: String = ""

    

    override func viewDidLoad() {

        super.viewDidLoad()

 

        // 現在日時

        let date = Date()

        

        // 年月日時分秒をそれぞれ個別に取得

        let calendar = Calendar.current

        let year = calendar.component(.year, from: date)

        let month = calendar.component(.month, from: date)

        let day = calendar.component(.day, from: date)

        

        yearLabel.text = "\(year)年"

        dateLabel.text = "\(month)月\(day)日"

        

        

        picker.delegate = self;

        picker.dataSource = self;

   

        // はじめに表示する項目を指定

        picker.selectRow(mystarInt, inComponent: 0, animated: true)

    }

    

    // UIPickerViewの列の数

    func numberOfComponents(in pickerView: UIPickerView) -> Int {

        return 1

    }

    

    // UIPickerViewの行数、要素の全数

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

        return posts.count

    }

  

    // UIPickerViewに表示する配列

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

        // 表示する文字列を返す

        return posts[row]

    }

 

    // UIPickerViewのRowが選択された時の挙動

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        // 選択時の処理

        mystarStr = posts[row]

    }

 

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

  

    // MARK: - Navigation

 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        guard let identifier = segue.identifier else {

            return

        }

        if identifier == "msgShowResult" {

            let msgResultVC = segue.destination as! MsgResultViewController

            msgResultVC.starText = self.mystarStr

        }

    }

   

}