Sie können ein NSDictionary als Datenquelle für UIPickerView verwenden, aber wenn Sie ein benutzerdefiniertes NSObject haben, das bereits das Schlüssel/Wert-Paar enthält, wäre es einfacher, ein NSArray dieser Objekte als Datenquelle zu verwenden.
Angenommen, das benutzerdefinierte Objekt ist Planet mit den Eigenschaften planetId (int) und planetName (NSString). Erstellen Sie ein NSArray namens planets mit den Objekten in der Reihenfolge, in der sie in der Auswahl angezeigt werden sollen (sie müssen nicht in der Reihenfolge planetId sein).
In titleForRow, würden Sie tun:
return ((Planet *)[planets objectAtIndex:row]).planetName;
In didSelectRow, den ausgewählten Planeten zu erhalten:
Planet *selectedPlanet = (Planet *)[planets objectAtIndex:row];
//
//
Mit einem NSDictionary, würden Sie müssen Ordnen Sie die Schlüsselwerte der Zeilennummer des Pickers zu. Eine Möglichkeit besteht darin, die Schlüsselwerte auf die Zeilennummern zu setzen und die benutzerdefinierten Objekte als Werte hinzuzufügen.
So würde das Wörterbuch wie folgt erstellt werden:
NSArray *keys = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", nil];
NSArray *values = [NSArray arrayWithObjects:mercury, venus, earth, mars, nil];
items = [[NSDictionary dictionaryWithObjects:values forKeys:keys] retain];
In titleForRow, würden Sie tun:
NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *planet = (Planet *)[items objectForKey:itemKey];
return planet.planetName;
In didSelectRow, würden Sie tun:
NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *selectedPlanet = (Planet *)[items objectForKey:itemKey];
Die UIPickerView ist Sie werden nicht wie die .net-Dropdownliste aussehen oder sich so verhalten, aber die wesentliche Funktionalität ist vorhanden. Abgesehen von der Erscheinung, gibt es ein bestimmtes Problem, das Sie haben? – DyingCactus
Ich möchte nur ein Schlüssel-Wert-Paar für die Datenquelle für UIPickerView verwenden. Sieht so aus, als ob das nicht möglich ist. Ich habe ein benutzerdefiniertes NSObject [mit Name und ID-Eigenschaften]. Ich stelle die Namen so ein, dass sie auf dem UIPickerView angezeigt werden. Wenn der Benutzer einen Namen auswählt, muss ich die ID des Namens finden und verwenden. Danke für Ihre Antwort. – Dave