#PickerViewに連続番号を表示したい場合
Swiftには start...end (例:1...100 など)という表記で、数値型のRangeオブジェクトを作成する仕組みがあります。
これを数値型の配列にキャスト([Int])することで、連続番号の入った配列を簡単に作成することができます。
この仕組を使って、PickerViewに表示したいtitleの値を、String型に変換して加工することで、連続番号の入った一覧を作ることが楽になります。
swift
//数値の範囲(1...10という記法)を配列にする
var dataArray:[Int] = ([Int])(2005...2015)
//PickerViewのコンポーネントの数を決めるメソッド
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
//PickerViewのコンポーネント内の行数を決めるメソッド
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return dataArray.count
}
//PickerViewのコンポーネントに表示するデータを決めるメソッド
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
//配列の値を文字列に変換してPickerのtitleに使う
return String(dataArray[row]) + "年"
}
#連続番号の値を加工する
さらにSwiftには配列に対して加工する便利なmap関数があります。
これを利用して、1...5の値をすべて5倍するといった加工が可能です。
swift
//数値の範囲(1...5という記法)を配列にし、さらにすべての値を5倍する
var dataArray:[Int] = ([Int])(1...5).map {($0 * 5)}
//PickerViewのコンポーネントの数を決めるメソッド
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
//PickerViewのコンポーネント内の行数を決めるメソッド
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return dataArray.count
}
//PickerViewのコンポーネントに表示するデータを決めるメソッド
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
//配列の値を文字列に変換してPickerのtitleに使う
return String(dataArray[row]) + "人"
}