UIPickerView
UIPickerViewは特定の値の中から1つの値を選択させたい場合に使用します。
UIPickerViewのクラス階層
生成
// 生成例
UIPickerView *piv = [[UIPickerView alloc] init];
InterfaceBuilderで生成した場合のデフォルトサイズは、320x216です。
UIPickerViewのプロパティ
プロパティ名/型 | 読専 | 説明 |
---|---|---|
delegate (UIPickerViewDelegate) |
デリゲートを設定する (例)自分自身をデリゲートに設定する piv.delegate = self; ※UIPickerViewDelegateプロトコルを実装する必要あり。 |
|
dataSource (UIPickerViewDataSource) |
データソースを設定する (例)自分自身をデータソースに設定する piv.dataSource = self; ※UIPickerViewDataSourceプロトコルを実装する必要あり。 |
|
showsSelectionIndicator (BOOL) |
選択中の行に目印を付ける設定 YES:目印あり NO:目印なし (例)目印を付ける piv.showsSelectionIndicator = YES; ※一番上の画像の左側が目印なし版、右が目印あり版です。 |
主要なプロパティのみ掲載しています。
上記「UIPickerViewのクラス階層」にあるクラスのプロパティも使用できます。
UIPickerViewのメソッド
メソッド | 説明 |
---|---|
-(NSInteger)selectedRowInComponent: (NSInteger)component |
選択されている値のインデックス番号を取得する (例)1列目の選択値のインデックスを取得する NSInteger val = [piv selectedRowInComponent:0]; |
-(void)reloadAllComponents | ピッカーの表示を全て更新する (例)全更新 [piv reloadAllComponents]; |
-(void)reloadComponent: (NSInteger)component |
特定の列インデックスを指定して表示を更新する (例)1列目を更新する [piv reloadComponent:0]; |
-(void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated |
UIPickerViewの初期値を設定する (例)1列目の3行目を選択された状態にする [piv selectRow:2 inComponent:0 animated:NO]; |
※インデックス番号は、列も行も0から始まります。
例えば、1行目のインデックス番号は0、2行目のインデックス番号は1になります。
主要なメソッドのみ掲載しています。
上記「UIPickerViewのクラス階層」にあるクラスのメソッドも使用できます。
UIPickerViewのデリゲートメソッド
メソッド | 説明 |
---|---|
-(NSInteger)numberOfComponentsInPickerView: (UIPickerView*)pickerView |
★必須 ピッカーに表示する列数を返すように実装する |
-(NSInteger)pickerView: (UIPickerView*)pickerView numberOfRowsInComponent: (NSInteger)component |
★必須 ピッカーに表示する行数を返すように実装する |
-(NSString*)pickerView: (UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component |
表示する値を返すように実装する (rowに行番号、componentに列番号が渡されてくるので対応する値を返すように実装する) |
-(CGFloat)pickerView: (UIPickerView*)pickerView widthForComponent:(NSInteger)component |
列の幅を指定する (componentに列インデックス番号が渡されてくるので対応する幅を返すように実装する) |
主要なデリゲートメソッドのみ掲載しています。
UIPickerViewの例文
// プロトコルの実装
@interface hoge : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource> {
...
// UIPickerViewの例文
UIPickerView *piv = [[[UIPickerView alloc] init] autorelease];
piv.center = self.view.center; // 中央に表示
piv.delegate = self; // デリゲートを自分自身に設定
piv.dataSource = self; // データソースを自分自身に設定
[self.view addSubview:piv];
// デリゲートメソッドの実装
// 列数を返す例
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{
return 2; //列数は2つ
}
// 行数を返す例
-(NSInteger)pickerView:(UIPicerView*)pickerView
numberOfRowsInComponent:(NSInteger)component{
if(component == 0){
return 10; // 1列目は10行
}else{
return 5; // 2列目は5行
}
}
// 表示する内容を返す例
-(NSString*)pickerView:(UIPickerView*)pickerView
titleForRow:(NSInteger)row forComponent:(NSInteger)component{
// 行インデックス番号を返す
return [NSString stringWithFormat:@"%d", row];
}