二:UIPickerViewDataSource
1、返回UIPickerView一共有几列
- (NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView;
2、返回定制的component列有几行数据
- (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;
//选中某一列某一行
NSInteger rowIndex=[self.picker selectedRowInComponent:0];//获取选中的位置
[ self . picker selectRow :rowIndex inComponent :component animated : NO ];通过该方法滚动到指定的位置.部分代理方法代码如下:
#pragma mark----pickerViewDelegate---------
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
if (isSexPicker==YES) {//显示两种类型的UIPickerView
return 1;
}else{
return 2;
}
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (isSexPicker==YES) {
return sexs.count;
}else{
if (component==0) {
return cityList.count;//省份
}
return childCityList.count;//市的个数
}
}
//自定义显示内容
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UIView *view1=[[UIView alloc]initWithFrame:CGRectMake(0, 0,APPW,50)];
UILabel *label=[[UILabel alloc]init];
if (isSexPicker==YES) {
label.frame=CGRectMake(APPW/2.0-10, 0,APPW,50);
label.text=sexs[row];
}else{
if (component==0) {//第一列
label.frame=CGRectMake(APPW*0.4, 0,APPW/2,50);
label.text=[cityList objectAtIndex:row][@"name"];
}else if (component==1) {//第二列
label.frame=CGRectMake(100, 0,APPW/2,50);
label.text=childCityList[row][@"name"];
}
}
[view1 addSubview:label];
return view1;
}
-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
return 50;
}
// 当用户选中UIPickerViewDataSource中指定列、指定列表项时激发该方法
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:
(NSInteger)row inComponent:(NSInteger)component
{
if (isSexPicker==YES) {
self.contentComponent=sexs[row];
self.sexIndex=row;//记录位置
}else{
if (component==0) {
self.oneComponent=cityList[row][@"name"];
self.proviceIndex=row;//记录省份的位置位置
//重点:根据选中省份的位置获取第二列显示的数据并刷新,这样才可以看到实时显示数据的效果
NSDictionary *dic = [cityList objectAtIndex:row];
childCityList =[NSArray arrayWithArray:[dic objectForKey:@"childrenList"]];//获取市城市名称
[pickerView reloadComponent:1];
}else if(component==1){
self.twoComponent=childCityList[row][@"name"];
self.mayorIndex=row;
}
}
}
- (CGFloat)pickerView:(UIPickerView *)pickerView
widthForComponent:(NSInteger)component
{
if (isSexPicker==NO) {
return APPW/2.0;
}
return APPW;
}