Swiftで遊ぼう! - 319 - My Picker Project : PickerViewDelegate & PickerViewDataSource
Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
質問 : Swiftで遊ぼう! - 252 - FaceViewプロジェクト始動 - Swiftで遊ぼう! on Hatena
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に持たせています。
他のクラスに具体的な値を持たせるためにデリゲート(委任)する必要があるという説明をしてきました。
今日は最後のステップ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] }
これでコードは完成です。
今日はここまで。