我正在使用帶有三個組件的UIpicker。我希望如果我根據所選組件在第一個組件中選擇一行,它將顯示第二個組件中相應數據的值。 我使用數組的第一個組件的值,如@「UK」,@「US」,@「EU」。現在我想如果用戶在第一個組件中選擇英國,那麼我想加載UKsize1 = [NSArray arrayWithObjects:@「1 「,@」2「,@」3「,@」4「,@」5「,零];在第二個組件中,如果用戶在第一個組件中選擇了US,那麼我想在第二個組件中加載EUsize2=[NSArray arrayWithObjects:@"11",@"22",@"33",@"44",@"55", nil];
。相同的歐盟值,然後我想加載USsize3=[NSArray arrayWithObjects:@"111",@"222",@"333",@"444",@"555", nil];
。我希望第二個分量值根據第一個分量改變,第三個分量值是固定的。如何根據UIPickerview中的第一個組件選擇來設置第二個組件中的數據
這段代碼我試過但我沒有得到確切的價值。
- (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;
}
}
什麼問題?當你選擇歐盟時,你不想要11,22,33 ...陣列嗎?這些是EUsize2陣列的價值。 – rdelmar
我想要如果歐盟11,22,33,如果英國那麼UKsize1陣列價值會來。 @rdelmar – Sport