2016-06-06 2 views
1

Ich habe einen View Controller mit zwei verschiedenen UIPickerViews. Der erste enthält sieben Namen. Die zweite ist eine Liste von Zahlen (Strings) von 1 bis 100. Ich möchte, dass der Standardwert die letzte Nummer in der Liste ist.Setzen von eindeutigen Standardwerten für mehrere UIPickerViews im selben View Controller Objective C

Ich habe den Standardwert der ersten UIPickerView mit der folgenden Methode, die ich in ViewDidLoad aufrufen, festgelegt.

[self.namePicker selectRow:2 inComponent:0 animated:YES]; 

Das funktioniert gut und mein NamePicker zeigt das dritte Element, wenn ich den Code ausführen.

Der folgende Methodenaufruf funktioniert jedoch nicht für meine zweite UIPickerView (auch in ViewDidLoad aufgerufen).

[self.numberPicker selectRow:99 inComponent:0 animated:YES]; 

es keine Fehler gibt, wenn ich laufen, die Number erscheint nur mit einem Standardwert von 1 (das erste Element) jedes Mal.

+0

Sind Sie sicher, dass 'self.numberPicker' nicht' nil' ist, wenn Sie diesen Anruf tätigen? – rmaddy

+0

Nein, ich habe es gerade überprüft. Es ist nicht Null. Es ist ein UIPickerView-Objekt. –

+0

Eine andere Sache, die passiert, wenn ich die Methode zu selectRow: 1 statt 99 ändere, funktioniert es und setzt den Standard auf das zweite Element. Es funktioniert einfach nicht mit höheren Zahlen wie 99. –

Antwort

1

Das Problem könnte sein, dass Ihre UIPickerView dataSource- und Delegate-Methoden nicht zwischen den beiden UIPickerViews unterscheiden. Eine Möglichkeit, dies zu handhaben wäre, ihnen trennen Tags in Interface zu geben und dann verwenden, wenn und/oder Switch-Anweisungen in Ihrer Stellvertretung und Datenquelle Methoden:

#define kNamesPicker   0  // tag assigned in IB 
#define kNumberPicker   1  // tag assigned in IB 
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 

if (pickerView.tag == kNamesPicker) { 
} 
else if (pickerView.tag == kNumberPicker) { 
} 

Sobald Ihre Stellvertretung und Datenquelle Methoden sortiert werden Werte zu dem Kommissionierer zuweisen sollte gut funktionieren.

+0

Danke für Ihre Antwort. Ich verwende Tags, um zwischen den beiden Auswahlansichten mit if-Anweisungen in den Delegate-Methoden zu unterscheiden. –

+0

Haben Sie überprüft, dass Steckdosen und Aktionen einzigartig sind? Durch Kopieren/Einfügen können diese kopiert werden und zu mehreren Verbindungen führen. – caxix

+0

Ja, ich habe das überprüft und alle Steckdosen/Aktionen scheinen eindeutig und korrekt zu sein. –

Verwandte Themen