2010年5月17日月曜日

メニューから選択させるPickerView

メニューに複数項目を表示し、その中からユーザに選択させる為のコントロールとして、UIPickerViewがあります。
UIPickerViewクラスには複数の「行」と「列」を表示可能です。
この「行」と「列」のことを、UIPickerViewクラスではそれぞれ「Row」と「Component」と呼んでいます。

また、UIPickerViewクラスが要素の行数と列数がいくつあるのかをアプリケーションに対して問い合わせる時や、特定の行列が選択された時にアプリケーションに対して通知してくる等のイベントをデリゲートを経由して行います。


- (NSInteger) numberOfComponentsInPickerView: (UIPickerView*) view
component(列)がいくつあるのかの問い合わせです。
アプリケーションは要素の列数(component)の数を返却します。


- (CGFloat) pickerView: (UIPickerView*) view widthForComponent: (NSUInteger) comp
特定のcomponent(列)の幅が何ピクセルあるかの問い合わせです。
アプリケーションはcomponent(列)の幅をCGFloat型で返却します。


- (NSUInteger) pickerView: (UIPickerView*) view numberOfRowsInComponent:(NSUInteger) comp
特定のcomponent(列)の中に何個のRow(行)が存在するかの問い合わせです。
アプリケーションは要素の行数(row)を返却します。


- (NSString*) pickerView: (UIPickerView*) view titleForRow: (NSInteger) row forComponent: (NSInteger) component
特定の行と列に表示する文字列の問い合わせです。
アプリケーションはパラメータで指定された行と列に該当する文字列を返却します。


- (void) pickerView: (UIPickerView*) view didSelectRow: (NSInteger) row inComponent: (NSInteger) component
特定の行列が選択されたことの通知です。
アプリケーションは選択された行列を処理します。



途中で表示する行と列のデータを変更する場合は、UIPickerViewクラスのreloadComponentメソッドかreloadAllComponentsメソッドを呼びます。


- (void) reloadComponent: (NSInteger) comp
特定component(列)が変更されたことをアプリケーションからUIPickerViewクラスに通知します。
compに列番号を指定します。
このメソッドが呼ばれると、UIPickerViewクラスのインスタンスは上記のメソッドの上から4つ(numberOfComponentsInPickerView〜pickerView: titleForRow: rowForComponent)が順番に呼出されて表示が更新されます。


- (void) reloadAllComponents
全てのcomponentが変更されたことをアプリケーションからUIPickerViewクラスに通知します。
このメソッドが呼ばれると、UIPickerViewクラスのインスタンスは上記のメソッドの上から4つ (numberOfComponentsInPickerView〜pickerView: titleForRow: rowForComponent)が順番に呼出されて表示が更新されます。

0 件のコメント:

コメントを投稿