一、属性及方法
1.numberOfComponents:返回UIPickerView当前的列数
NSInteger num = _pickerView.numberOfComponents;
NSlo(@"%d",num);
2.-(NSInteger)numberOfRowslnComponent:(NSIntger)compontent;返回compontent列中有多少行
NSIntegernumInCp = [_pickerViewnumberOfRowsInComponent:0];
NSLog(@"%d",numInCp);
3.-(CGSize)rowSizeForComponent:(NSInteger)component;返回component中一行的尺寸
CGSizesize = [_pickerViewrowSizeForComponent:0];
NSLog(@"%@",NSStringFromCGSize(size));
二、deledate代理
1.设置UIPickerView的代理
_pickerView.delegate = self;
//设置UIPickerView每行显示的内容
2.-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
return @"showData";
}
3.- (UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView*)view;
//返回一个视图,用来设置pickerView的每行显示的内容。
-(UIView*)pickerView:(UIPickerView*)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView*)view
{
UIView*myView=[[UIViewalloc]init];
myView.backgroundColor= [UIColorredColor];
returnmyView;
}
三、dataSource:数据源
#pragma mark-dataSource method
//设置每列显示3行
- (NSInteger)pickerView:(UIPickerView*)pickerView
numberOfRowsInComponent:(NSInteger)component
{
return3;
}
//设置显示2列
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
return2;
}
四. showsSelectionIndicator:是否显示指示器,默认为NO
_pickerView.showsSelectionIndicator=NO;
注意:设置UIPickerView的行数与列数需要设置数据源,遵守UIPickerViewDataSource,设置UIPickerView的内容需要设置代理,并且遵守代理方法UIPickerViewDelegate。
五.-(void)pickerView:(UIPickerView*)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;
当点击UIPickerView的某一列中某一行的时候,就会调用这个方法。
六.返回第component列每一行的高度
- (CGFloat)pickerView:(UIPickerView*)pickerView
rowHeightForComponent:(NSInteger)component;
七.刷新某一列的数据
一旦调用了这个方法,就会重新给数据源发送消息计算这列的行数、重新给代理发送消息获得这列的内容
[pickerViewreloadComponent:1];
八.刷新所有列的数据
- (void)reloadAllComponents;
九.返回选中的是第component列的第几行。
-(NSInteger)selectedRowInComponent:(NSInteger)component;
对省市进行遍历的实例:
结果为: