-3

我有一个视图,它有 5 个UITextFields,它显示了一个UIPickerView. 问题是选择器指示器希望始终从前一个文本字段离开的数组位置开始。例如,我有 2 个阵列 1 个猫、狗、马和 2 个房子、谷仓、学校。如果我选择第一个文本字段并选择狗,当我单击第二个文本字段时,指示器视图从谷仓开始。目前我只是将它设置为动画到每个数组的位置 0,但是有没有一种方法可以让它们从数组中的 0 位置开始,然后使用 UIPicker 的一个实例保存每个数组的位置?谢谢!

编辑:对不起,我的语法阻止我的一些问题显示

4

2 回答 2

1

在从选取器中选择行时,使用两个 int iVar 来保存选取器的索引。

int a,b;
BOOL isArray1IsUsedInPicker;

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if(isArray1IsUsedInPicker)
       a=row;
    else
       b=row;
}

并且当您根据数组重新加载选择器时,相应地调整 BOOL 变量

- (void)textFieldDidBeginEditing:(UITextField *)textField
    {
       // your code ---
        // set  isArray1IsUsedInPicker = YES; if going to use array1 else set NO 

        [picker reloadComponent];

       if(isArray1IsUsedInPicker)
          [picker selectRow:a inComponent:0 animated:NO];
       else
          [picker selectRow:b inComponent:0 animated:NO];

     }
于 2013-01-08T06:43:40.170 回答
0

仅以一个BOOL变量为例...

BOOL Array1;

viewDidLoad:在方法中设置此变量值

Array1 = YES;//or set NO which you want...

之后在textFieldDidBeginEditing方法中设置这个BOOL变量值 true 和 false ,然后UIPickerView像下面这样重新加载......

-(void)textFieldDidBeginEditing:(UITextField *)textField{


    if (textField == textField1) {
        Array1 = YES;
    }
    else {
        Array1 = NO;
    }
    [yourPickerView reloadAllComponents];
}

并使用此波纹管代码和此示例中的逻辑..

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


    if (Array1) {
        return [array1 count];
    }

    else{
        return [array2 count];
    }

}

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


    if (Array1) {
        return [array1 objectAtIndex:row];
    }

    else{
        return [array2 objectAtIndex:row];
    }
}

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


    if (Array1) {

        textField1.text = [array1 objectAtIndex:row]; 
    }
    else{
        textField2.text = [array2 objectAtIndex:row]; 
    }
}
于 2013-01-08T06:46:31.227 回答