2009-10-28 12 views
18

Ich habe eine Picker-Ansicht, die eine Liste von Nummern zur Auswahl hat. Ich möchte in der Lage sein, das Steuerelement in einer bestimmten Zeile zu initialisieren. Wenn der Benutzer beispielsweise 10 als Standard angibt, sollte das Steuerelement automatisch in dieser Zeile positioniert werden, wenn das Steuerelement zuerst initialisiert wird.iphone SDK: Wie man den Anfangswert eines UIPickerView einstellt?

Vielen Dank im Voraus.

Antwort

55

Sie rufen selectRow:inComponent:animated: und übergeben Sie den Index der Zeile, die Sie ausgewählt haben.

Dieser Code führt zu einem UIPickerView durch seine Zahlen Spin 0 bis 60, bevor sie auf 0.

- (void)viewDidAppear:(BOOL)animated { 

    [thePicker selectRow:60 inComponent:0 animated:YES]; 
    [thePicker reloadComponent:0]; 
    [thePicker selectRow:60 inComponent:1 animated:YES]; 
    [thePicker reloadComponent:1]; 
    [thePicker selectRow:0 inComponent:0 animated:YES]; 
    [thePicker reloadComponent:0]; 
    [thePicker selectRow:0 inComponent:1 animated:YES]; 
    [thePicker reloadComponent:1]; 
} 

In Ihrem Fall zur Ruhe kommt, zehn Zeile angezeigt werden, rufen Sie wäre so etwas wie:

[thePicker selectRow:10 inComponent:0 animated:YES]; 
+0

Es funktioniert nicht wie erwartet. Ich habe diesen Code in ViewDidLoad für den Controller.Nicht sicher warum? [tipPicker selectRow: 5 inComponent: 0 animiert: YES]; –

+0

Die Lösung funktionierte, nachdem ich IB Problem behoben habe. –

+0

Schöne Demo. Vielen Dank. –

0

Was Sie tun können, anstatt die Zeile auszuwählen, besteht darin, dass der Auswahlbildschirm den gewünschten Wert findet. Die Art und Weise ist die Schaffung einer Schleife in dem Array zu finden und auswählen:

- (void)viewDidAppear:(BOOL)animated{  
    int i = 0; 
    for(NSString* number in arrayName) 
    { 
     if ([stringValue isEqualToString:number]){ 
      [pickerViewName selectRow:i inComponent:0 animated:YES ]; 
     } 
     i++; 
    } 
} 
0

Wenn Sie UITextField mit UIPickerView

[self.text_field setInputView:self.picker]; 

dann diese verwenden verwenden:

self.text_field.text = [_myarray objectAtIndex:10]; 
Verwandte Themen