Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

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

Beginning iPhone Development with Swift: Exploring the iOS SDK

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]
}

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

今日はここまで。