LoginSignup
20
28

More than 5 years have passed since last update.

PickerViewに連続番号を表示する〜Swiftで連続番号の配列作成【メモ】

Last updated at Posted at 2015-05-10

PickerViewに連続番号を表示したい場合

image

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]) + "年"
}

連続番号の値を加工する

image

さらに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]) + "人"
}
20
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
28