UIPickerView の使用方法のメモです。UITableView に使い方は似ています。

  • numberOfComponentsInPickerView で何列にするか指定
  • pickerView: numberOfRowsInComponent で列のセル数を指定
  • pickerView: titleForRow: forComponent でそれぞれの列、セルのラベルを指定
  • pickerView: didSelectRow: inComponent で Picker を動かした後の処理をする

という流れです。

IB で View に UIPickerView を配置する。

UIPickerView を配置

UIPickerView を配置

PickerViewController.h

#import <UIKit/UIKit.h>

@interface PickerViewController : UIViewController <UIPickerViewDelegate>{
	IBOutlet UIPickerView *picker;
}

@property (nonatomic, retain) UIPickerView *picker;

@end

PickerViewController.m

#import "PickerViewController.h"

@implementation PickerViewController

@synthesize picker;

- (void) pickerView: (UIPickerView*)pView didSelectRow:(NSInteger) row  inComponent:(NSInteger)component {
	NSLog(@"row=%d, component=%d", row, component);

	int row1 = [picker selectedRowInComponent:0];
	int row2 = [picker selectedRowInComponent:1];
	int row3 = [picker selectedRowInComponent:2];

	NSLog(@"selected %d, %d, %d", row1, row2, row3);
}

- (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView {
	return 3;
}

- (NSInteger) pickerView: (UIPickerView*)pView numberOfRowsInComponent:(NSInteger) component {
	return 5*(component+1);
}

- (NSString*)pickerView: (UIPickerView*) pView titleForRow:(NSInteger) row forComponent:(NSInteger)component {
	return [NSString stringWithFormat:@"%d - %d",component, row];
}

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];
    picker.delegate = self;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

- (void)dealloc {
    [super dealloc];
}

@end

IB で Outlet を接続すれば OK です。

e38394e382afe38381e383a3-52

UIPickerView の縦と幅のサイズは固定です。ホイールの幅とセルの高さは調節可能です。

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component {
	return 30.0f;
}

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component {
	return 80.0f;
}
ホイールの幅とセルの高さを調整

ホイールの幅とセルの高さを調整

関連する投稿