gpt4 book ai didi

ios - 如何根据 UIPickerview 中的第一个组件选择设置第二个组件中的数据

转载 作者:行者123 更新时间:2023-12-01 17:39:40 25 4
gpt4 key购买 nike

我正在使用具有三个组件的 UIpicker。我想如果我根据所选组件在第一个组件中选择一行,它会显示第二个组件中相应数据的值。
我使用数组作为第一个组件值,例如 @"英国",@"美国",@"欧盟" .现在我想如果用户在第一个组件中选择了 UK 然后我想加载 UKsize1=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];在第二个组件中,如果用户在第一个组件中选择了美国,那么我想要 EUsize2=[NSArray arrayWithObjects:@"11",@"22",@"33",@"44",@"55", nil];加载第二个组件。与欧盟值相同,然后我想加载 USsize3=[NSArray arrayWithObjects:@"111",@"222",@"333",@"444",@"555", nil]; .我希望根据第一个组件更改第二个组件的值,第三个组件的值是固定的。

我试过这段代码,但我没有得到确切的值(value)。

- (id)init 
{
if (self = [super init]) {
notesToDisplayForKey = [NSArray arrayWithObjects: @"UK", @"US", @"EU", nil];
scaleNames = [NSArray arrayWithObjects: @"11", @"22", @"33", @"555",@"666",@"777",nil];
scaleValue=[NSArray arrayWithObjects: @"1" ,@"2", @"3", @"4",@"5",@"6", @"7",@"8",@"9", @"10",@"11",nil];
UKsize1=[NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
EUsize2=[NSArray arrayWithObjects:@"11",@"22",@"33",@"44",@"55", nil];
USsize3=[NSArray arrayWithObjects:@"111",@"222",@"333",@"444",@"555", nil];
}
return self;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
return 3;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
// Returns
switch (component) {
case 0: return [notesToDisplayForKey count];
case 1:
if([selectedKey isEqualToString:@"UK" ])
{

return [UKsize1 count];
}
else if([selectedKey isEqualToString:@"US"] )
{

return [USsize3 count];
}
else
{

return [EUsize2 count];
}
//return [scaleNames count];
case 2: return [scaleValue count];
default:break;
}
return 0;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
switch (component) {
case 0: return [notesToDisplayForKey objectAtIndex:row];
case 1:if([selectedKey isEqualToString:@"UK" ])
{
selectedScale = [scaleNames objectAtIndex:row];
return selectedScale;
}
else if([selectedKey isEqualToString:@"US"] )
{
selectedScale = [USsize3 objectAtIndex:row];
return selectedScale;
}
else
{
selectedScale = [EUsize2 objectAtIndex:row];
return selectedScale;
}
case 2: return [scaleValue objectAtIndex:row];
default:break;
}
return nil;
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// NSLog(@"Row %i selected in component %i", row, component);
switch (component) {
case 0:
selectedKey = [notesToDisplayForKey objectAtIndex:row];
return;

case 1:

// selectedScale = [scaleNames objectAtIndex:row];
if([selectedKey isEqualToString:@"UK" ])
{
selectedScale = [scaleNames objectAtIndex:row];
return;
}
else if([selectedKey isEqualToString:@"US"] )
{
selectedScale = [USsize3 objectAtIndex:row];
return;
}
else
{
selectedScale = [EUsize2 objectAtIndex:row];
return;
}
return;

case 2:
selectedValue = [scaleValue objectAtIndex:row];
return;
default:break;
}
}

screenshot

最佳答案

只需检查此方法即可。它会起作用。

 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// NSLog(@"Row %i selected in component %i", row, component);
switch (component) {
case 0:
selectedKey = [notesToDisplayForKey objectAtIndex:row];
[pickerView reloadAllComponents];
return;

case 1:

// selectedScale = [scaleNames objectAtIndex:row];
if([selectedKey isEqualToString:@"UK" ])
{
selectedScale = [UKsize1 objectAtIndex:row];
return;
}
else if([selectedKey isEqualToString:@"US"] )
{
selectedScale = [USsize3 objectAtIndex:row];
return;
}
else
{
selectedScale = [EUsize2 objectAtIndex:row];
return;
}
return;

case 2:
selectedValue = [scaleValue objectAtIndex:row];
return;
default:break;
}
}

关于ios - 如何根据 UIPickerview 中的第一个组件选择设置第二个组件中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com