0
int variabla;

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

return 1;
}

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


if (variabla == 1)
    return list4.count;

else if(variabla == 2)
    return list3.count;

if (variabla == 3)
    return list1.count;

if (variabla == 4)
    return list2.count;

return YES;

[pickerView reloadAllComponents];
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
if (variabla == 1) {
    subjectField.text = [list4 objectAtIndex:row];
}
else if  (variabla == 2) {
    gradeField.text = [list3 objectAtIndex:row];
}
else if (variabla == 3) {
    mathField.text = [list1 objectAtIndex:[pickerView selectedRowInComponent:0]];
    selectedRow = [pickerView selectedRowInComponent:0];
    coreTView.text = [mathMeaning objectAtIndex:selectedRow];
}
if (variabla == 4) {
    elaField.text = [list2 objectAtIndex:[pickerView selectedRowInComponent:0]];
    selectedRow = [pickerView selectedRowInComponent:0];
    coreTView.text = [elaMeaning objectAtIndex:selectedRow];
}


[pickerView reloadAllComponents];
NSLog(@"row selected is %d", selectedRow);

}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component  {

if (variabla == 1)
    return [list4 objectAtIndex:row];


if (variabla == 2)
    return [list3 objectAtIndex:row];

if (variabla == 3)
    return [list1 objectAtIndex:row];

if (variabla == 4)
    return [list2 objectAtIndex:row];

return NO;

[pickerView reloadAllComponents];
}

UIPickerView以前のユーザー入力に基づいてa をロードする方法を知りたい、または正しい方向を示したいUITextFieldので、前のテキストフィールドappleに入力した場合、赤、緑、青を表示したい、UIPickerViewまたは入力した場合オレンジ、オレンジ、イエローが見たいです。

4

2 に答える 2

0

多次元配列を使用するのに適した時期のように思えます。

NSArray *titles = [[NSArray alloc] initWithObjects:
 [[NSArray alloc] initWithObjects:@"Red",@"Green",@"Blue",nil],
 [[NSArray alloc] initWithObjects:@"Orange",@"Yellow",@"Grape",nil],
 nil];

ここで必要なのは、入力を表すint(使用しているように見えるvariabla) だけです。たとえば、ユーザーが「Apple」と入力した場合は、variabla0 に設定します。「オレンジ」を入力した場合は、variabla1 に設定します。等々。

次に、それに応じて関連する機能を設定できます。

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return [[titles objectAtIndex:variabla] count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component  {
    return [[titles objectAtIndex:variabla] objectAtIndex:row];
}

NSArrayに別の単語を追加するだけで、必要な数の単語のサポートを追加できますtitles

于 2012-11-27T05:07:03.690 に答える
0

変数BOOLを使用して、ユーザーがどのボタンをクリックしたか、アップルまたはオレンジ...

ここで次のような変数を取ります

BOOL isApple;

アップルボタンをクリックしてその時点でピッカービューをロードするときに、メソッドでこの変数を次のように設定します..

-(IBAction)btnApple_Clicked(id)sender{
   isApple =TRUE;
   [pickerView reloadAllComponents];
}

-(IBAction)btnOrange_Clicked(id)sender{
   isApple =FALSE;
   [pickerView reloadAllComponents];
}

そして、このデリゲートメソッドでは、次のように使用します...

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
   if(isApple){
       return [appleArray count];
   }
   else{
       return [orangeArray count];
   }
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component  {
    if (isApple) {
        return [appleArray objectAtIndex:row];
    }
    else{
        return [appleArray objectAtIndex:row];
    }
}

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    if (isApple) {
        yourTextField.text = [appleArray objectAtIndex:row];
    }
    else{
        yourTextField.text = [appleArray objectAtIndex:row];
    }
}
于 2012-11-27T05:10:21.847 に答える