属性
numberOfComponents (readonly) 选择框的行数
dataSource (readonly) 数据源
delegate 委托
(BOOL)showsSelectionIndicator 是否显示选择指示器
dataSource (readonly) 数据源
delegate 委托
(BOOL)showsSelectionIndicator 是否显示选择指示器
这个选择器是指滑动时PickerView上的选择方块:
如图所示 阿扎尔上方浮动的透明长方形就是指示器
委托方法
UIPickerViewDelegate
-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
选中选择框第row行时执行的代码
-(NSString*)pickerView:(UIPickerView*)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
显示出来的每行的文本
-(UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
给选择框设置视图格式选项,可以是UIView以及UIView的子类
这个方法可以设置自定义的视图来取代默认的显示每行的样式
-(CGFloat)pickerView:(UIPickerView*)pickerView rowHeightForComponent:(NSInteger)component
设置行高度
-(CGFloat)pickerView:(UIPickerView*)pickerView widthForComponent:(NSInteger)component
设置行宽度
-(CGFloat)pickerView:(UIPickerView*)pickerView rowHeightForComponent:(NSInteger)component
设置行高度
-(CGFloat)pickerView:(UIPickerView*)pickerView widthForComponent:(NSInteger)component
设置行宽度
UIPickerViewDataSource
这个委托中的两个方法都是必需的
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView (required)
设置选择框中可供选择的行数
一般都是一个,也可以同时选择两个或更多 类似于选择时间的那种,左右有两个轴同时进行选择。
-(NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component (required)
设置选择框中一共的行数
-(NSInteger)pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component (required)
设置选择框中一共的行数
一个简单的Demo
#define TOTAL_ROW_NUMBER 5
#define PICK_ROW_NUMBER 1
@interface ViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>
@property (weak, nonatomic) IBOutlet UILabel *textLabel;
@property (weak, nonatomic) IBOutlet UIPickerView *myPickerView;
@property (strong, nonatomic) NSArray *textArray;
@end
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return TOTAL_ROW_NUMBER;
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return PICK_ROW_NUMBER;
}
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return self.textArray[row];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
self.textLabel.text = self.textArray[row];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.myPickerView.showsSelectionIndicator = YES;
self.myPickerView.delegate = self;
self.textArray = [NSArray arrayWithObjects:@"Line 1",
@"Line 2",
@"Line 3",
@"Line 4",
@"Line 5", nil];
}
简单的效果就是:
这里可能又觉得每行的文本不长,留白太多,于是可以设置宽度:
- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component
{
return 150.0;
}
这里的CGFloat其实就是float:
更改宽度之后的效果:
至于多个选择框的使用,可以参见http://blog.csdn.net/totogo2010/article/details/7690518