picker viewの続き
DatePickerのお試しの前に、picker viewを直接、ユーティリティーエリアのライブラリペインから貼り付けてコードを書かずに、同様の動作をするプロジェクトを作ってみることにした。
コードをひとつひとつ消しながら、残す必要のあるコードを見つける。
コードを書くにはかなりの熟練が必要なので、貼り付けるだけで出来たら楽だ。
大勢でプロジェクトを書くわけではなく、あくまでも一人の家内工業(というほどでもないが)だから、貼り付けで済むならその方が確実だ。
もっとしっかりコードが書く体力がつくまでは楽チンなロープウェイ登山を選ぶの間違ってはいないだろう。
これでも動きました。
(ちなみに、当たり前だがピッカーとラベルは削除して
新たに貼り付けないと動かないので注意)
少し、デリゲートがわかったような気がする。
(でもまだ、本当は全然わかっていない)。
データを別の画面に遷移する方法を学びたいが、ここはグッと堪えて、
ともかく必要な部品の使い方をひとつひとつ学ぶことに精進だ!
次はDatePickerを学ぼう!(たぶん)
==================
(備忘録)ピッカービューを貼り付けで使うコード
==================
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource {
// UIPickerViewの貼り付け
@IBOutlet weak var myUIPicker: UIPickerView! //貼り付け
//private var myUIPicker: UIPickerView!の代わりに貼り付ける
private let myValues: NSArray = ["赤","黄","青","白","緑"]
// 表示する値の配列.配列には文字を入れないとエラーになることに注意
@IBOutlet weak var myLabel: UILabel! //貼り付け!!
override func viewDidLoad() {
super.viewDidLoad()
//以下のデリゲートを加えないと配列が読めない
myUIPicker.delegate = self
// DataSourceを設定する.デリゲート!
myUIPicker.dataSource = self
}
//pickerに表示する列数を返すデータソースメソッド.
func numberOfComponentsInPickerView(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) {
myLabel.text = String(myValues[row])
let aa = row //varだとエラーになる!
switch aa {
case 0 ://print("赤")
myLabel.backgroundColor = UIColor.redColor()
case 1 ://print("黄色")
myLabel.backgroundColor = UIColor.yellowColor()
case 2 ://print("青")
myLabel.backgroundColor = UIColor.blueColor()
case 3 ://print("白")
myLabel.backgroundColor = UIColor.whiteColor()
case 4 ://print("緑")
myLabel.backgroundColor = UIColor.greenColor()
default: //print("なし").defaultとがないとエラーになる
myLabel.backgroundColor = UIColor.blueColor()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
====================