Ios 使用3个组件在UIPickerView控制器中创建依赖项。第二个组件来自第一个,第三个组件来自第二个

Ios 使用3个组件在UIPickerView控制器中创建依赖项。第二个组件来自第一个,第三个组件来自第二个,ios,uipickerview,uipicker,Ios,Uipickerview,Uipicker,我有3个部件的选择器。我的目标是从第一个组件创建第二个组件,从第二个组件创建第三个组件。例如:当客户在第一个部件中选择汽车制造商奥迪时,他将看到第二个部件中的车型列表:@“A3”、“A4”、“A5”等。当他选择型号“A3”时,他将看到该特定型号的发动机列表:@“1.8 TFSI”、“2.0 TFSI”等。对于型号@“A4”,哪个列表不同:“2.0 TFSI”、“2.0 TDI”。因此,某些型号有自己的发动机列表。 我做了第一部分,当我选择汽车制造商时,我已经有了一系列车型,但不知道如何处理车型和

我有3个部件的选择器。我的目标是从第一个组件创建第二个组件,从第二个组件创建第三个组件。例如:当客户在第一个部件中选择汽车制造商奥迪时,他将看到第二个部件中的车型列表:@“A3”、“A4”、“A5”等。当他选择型号“A3”时,他将看到该特定型号的发动机列表:@“1.8 TFSI”、“2.0 TFSI”等。对于型号@“A4”,哪个列表不同:“2.0 TFSI”、“2.0 TDI”。因此,某些型号有自己的发动机列表。 我做了第一部分,当我选择汽车制造商时,我已经有了一系列车型,但不知道如何处理车型和发动机之间的“另一种制造”依赖关系。 谢谢你的帮助,谢谢

这是我的密码:

MpgPresetDataViewController.h

@property (weak, nonatomic) IBOutlet UILabel *picCarLabel;
@property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
MpgPresetDataViewController.m属性

@property (strong, nonatomic) NSMutableArray *make;
@property (strong, nonatomic) NSMutableArray *audi;
@property (strong, nonatomic) NSMutableArray *bmw;
@property (strong, nonatomic) NSMutableArray *cadillac;
@property (strong, nonatomic) NSMutableArray *tesla;
@property (strong, nonatomic) NSString *carMaker;
@property (strong, nonatomic) NSString *model;
视图没有加载

- (void)viewDidLoad
{
[super viewDidLoad];    
_make = [[NSMutableArray alloc] initWithObjects:@"AUDI", @"BMW", @"CADILLAC", @"TESLA",
nil];  
_audi = [[NSMutableArray alloc] initWithObjects:@"A3", @"A4", @"A5", @"A6", @"A8",
@"Allroad", @"Q3", nil]; 
_bmw = [[NSMutableArray alloc] initWithObjects:@"1 series", @"2 series", @"3 series", @"4
series", @"5 series", @"7 series", nil];
_cadillac = [[NSMutableArray alloc] initWithObjects:@"ELR", @"CTS COUPE", @"ATS", @"CTS",
@"XTS", nil];    
_tesla = [[NSMutableArray alloc] initWithObjects:@"Model S", @"Model X", nil];
组件数法

-(NSInteger) numberOfComponentsInPickerView:(UIPickerView *)pickerView {   
    return 3;
}
你选择了行方法吗

-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:
(NSInteger)component {

if (component == 0) {
    _carMaker = [[NSString alloc] initWithFormat:@"%@", [_make objectAtIndex:row]];  
}
[pickerView reloadComponent:1];   
}
-(NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
forComponent:(NSInteger)component {   

if (component == 0) {
        return [_make objectAtIndex:row];
    }    
    else {
        if ([_carMaker isEqualToString:@"AUDI"]) {
            return [_audi objectAtIndex:row];
        }
        if ([_carMaker isEqualToString:@"BMW"]) {
            return [_bmw objectAtIndex:row];
        }
        if ([_carMaker isEqualToString:@"CADILLAC"]){
            return [_cadillac objectAtIndex:row];
        }
        else {
            return [_tesla objectAtIndex:row];
        }
    }
return 0;    
}
行数法

-(NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:
(NSInteger)component {

 //Set numbers of rows
    if (component == 0) {
        return [_make count];
    }
    else {
        if ([_carMaker isEqualToString:@"AUDI"]) {
            return [_audi count];
        }    
        if ([_carMaker isEqualToString:@"BMW"]) {
            return [_bmw count];
        }    
        if ([_carMaker isEqualToString:@"CADILLAC"]) {
            return [_cadillac count];
        }
        if ([_carMaker isEqualToString:@"TESLA"]) {
            return [_tesla count];
        }            
    }
return 0;
}
行方法的标题

-(void) pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:
(NSInteger)component {

if (component == 0) {
    _carMaker = [[NSString alloc] initWithFormat:@"%@", [_make objectAtIndex:row]];  
}
[pickerView reloadComponent:1];   
}
-(NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
forComponent:(NSInteger)component {   

if (component == 0) {
        return [_make objectAtIndex:row];
    }    
    else {
        if ([_carMaker isEqualToString:@"AUDI"]) {
            return [_audi objectAtIndex:row];
        }
        if ([_carMaker isEqualToString:@"BMW"]) {
            return [_bmw objectAtIndex:row];
        }
        if ([_carMaker isEqualToString:@"CADILLAC"]){
            return [_cadillac objectAtIndex:row];
        }
        else {
            return [_tesla objectAtIndex:row];
        }
    }
return 0;    
}

如果将所有嵌套数据(数组的数组)放入plist,事情会简单得多。然后,重新加载每个组件变得很容易。不需要基于字符串值的硬编码。谢谢,威尔研究。