2013-01-08 39 views
-3

我有一個視圖,其中有5個UITextFields,可以調出一個UIPickerView的實例。問題在於選擇器指示器總是希望從前一個文本字段離開的數組位置開始。例如,我有2個陣列1貓,狗,馬和2房,穀倉,學校。如果我選擇第一個文本字段並選擇狗,當我單擊第二個文本字段時,指示器視圖從穀倉開始。目前我只是將它設置爲每個數組的位置爲0的動畫,但是有沒有一種方法可以讓它們每次從數組的0位置開始,然後使用UIPicker的一個實例保存每個數組的位置?謝謝!一個具有多個UITextField的UIPicker保存選擇器的位置

編輯:對不起,我的語法阻止我的一些問題無法顯示保存拾取的指標,而從選擇器中選擇行

+0

我不明白你的問題清楚..請給予更多的代碼描述:) – iPatel

+0

我不知道有多少代碼會有幫助,但我會盡我所能解釋更好:)我有多個文本框,帶來了單UIPicker的實例。每次我改變數組我使用'[pickr selectRow:0 inComponent:0 animated:YES];'這樣picker就在我的數組中的第一個項目,因爲如果我沒有選擇器會選擇哪個位置I先前選擇。我想做的事情是,如果用戶點擊回到先前的文本字段,我希望他們之前選擇的數組項(而不是該數組的第一項)(這是因爲我上面的代碼而發生的)。更好的意識? – badger0053

+0

'[yourPicker reloadAllComponents]'試試吧 – amar

回答

1

使用兩個int伊娃。

int a,b; 
BOOL isArray1IsUsedInPicker; 

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

,當你根據你的陣列重新加載選擇器,調整布爾變量相應

- (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]; 

    } 
+0

謝謝!這很好! – badger0053

0

就拿一個BOOL變量比如...

BOOL Array1; 

設定這個變量的值在viewDidLoad:方法

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

後,在textFieldDidBeginEditing方法只是設置此BOOL變量值真假,然後重新加載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]; 
    } 
}