Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
質問 : Swiftで遊ぼう! - 252 - FaceViewプロジェクト始動 - Swiftで遊ぼう! on Hatena

Beginning iPhone Development with Swift: Exploring the iOS SDK

Beginning iPhone Development with Swift: Exploring the iOS SDK

  • 作者: David Mark,Jack Nutting,Kim Topley,Fredrik Olsson,Jeff LaMarche
  • 出版社/メーカー: Apress
  • 発売日: 2014/11/19
  • メディア: Kindle版
  • この商品を含むブログを見る

Picker Viewはジェネリックなクラスなので、使用するためにリスト内容を外から与えてやらないといけません。常にMVCモデルで考えるため、Picker Viewクラスに値を持たせるのではなく、モデル(M)に値を持たせるのが理想的です。しかし、デモではコントローラー(C)になるView Conrollerに持たせています。

他のクラスに具体的な値を持たせるためにデリゲート(委任)する必要があるという説明をしてきました。

yataiblue.hatenablog.com

今日は最後のステップ6のメソッドを実装します。

UIPickerViewDataSourceプロトコールで実装させないといけないメソッドは2つあります。

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
 return 1
}

まず最初が、ピッカーで表示するコンポーネント数です。項目が1つなら「1」を返す必要があります。

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
 return characterNames.count
}

1つのコンポーネントにいくつの項目が保持されているが返す必要があります。アレー型ならそのアレーの項目数を返します。

UIPickerViewDelegateプロトコールには、コンポーネントの項目名(String型)を返すメソッドを実装する必要性があります。

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
 return characterNames[row]
}

これでコードは完成です。

今日はここまで。