@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad]; _item1 = [[NSArray alloc]initWithObjects:@"大类1",@"大类2", nil];
_item2 = [NSDictionary dictionaryWithObjectsAndKeys:@[@"子类11",@"子类12"],@"大类1",@[@"子类21",@"子类22"],@"大类2",nil];
_item3 = [NSDictionary dictionaryWithObjectsAndKeys:@[@"条目111",@"条目112"],@"子类11",@[@"条目121",@"条目122"], @"子类12",nil]; _pickview = [[UIPickerView alloc]init];
_pickview.dataSource = self;
_pickview.delegate = self; _pickview.frame = CGRectMake(, , , );
_pickview.showsSelectionIndicator = YES; [self.view addSubview:_pickview]; } // UIPickerViewDataSource协议必须实现的方法
// 确认该控件有多少列
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView
{
return ;
} //UIPickerViewDataSource协议必须实现的方法
//返回当前列显示的行数
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if( == component){
return _item1.count;
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = [_item2 valueForKey:item1Name]; return array.count;
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
NSInteger item2 = [_pickview selectedRowInComponent:];
NSString *item2Name = array[item2];
NSArray *array2 = _item3[item2Name];
return array2.count;
}else{
return ;
}
} //UIPickerViewDelegate协议要求实现
//返回当前行的内容,此处是将数组中数值添加到滚动的那个显示栏上
-(NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
if( == component){
return _item1[row];
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
return array[row];
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
NSInteger item2 = [_pickview selectedRowInComponent:];
NSString *item2Name = array[item2];
NSArray *array2 = _item3[item2Name];
return array2[row];
}else{
return NULL;
}
} //获取选择的数据
//监听轮子的移动
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if( == component){
//重新加载第二列的数据
NSLog(@"%@", _item1[row]);
[_pickview reloadComponent:];
}else if( == component){
//重新加载第三列的数据
[_pickview reloadComponent:];
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
NSLog(@"%@", array[row]);
}else if( == component){
NSInteger item1 = [_pickview selectedRowInComponent:];
NSString *item1Name = _item1[item1];
NSArray *array = _item2[item1Name];
NSInteger item2 = [_pickview selectedRowInComponent:];
NSString *item2Name = array[item2];
NSArray *array2 = _item3[item2Name];
NSLog(@"%@", array2[row]);
}
} //工具函数,遍历字典
-(void)describeDictionary:(NSDictionary *)dict
{
NSArray *keys;
int i, count;
id key, value; keys = [dict allKeys];
count = [keys count];
for (i = ; i < count; i++)
{
key = [keys objectAtIndex: i];
value = [dict objectForKey: key];
NSLog (@"Key: %@ for value: %@", key, value);
}
} @end
04-16 07:37
查看更多