Vous pouvez utiliser un NSDictionary comme source de données pour UIPickerView mais si vous avez un objet NSObject personnalisé qui contient déjà la paire clé/valeur, il serait plus simple d'utiliser un NSArray de ces objets comme source de données.
Supposons que l'objet personnalisé est Planet avec les propriétés planetId (int) et planetName (NSString). Créez un NSArray appelé planètes avec les objets dans l'ordre dans lequel vous voulez qu'ils apparaissent dans le sélecteur (ils ne doivent pas nécessairement être dans l'ordre planetId).
En titleForRow, vous feriez:
return ((Planet *)[planets objectAtIndex:row]).planetName;
En didSelectRow, pour obtenir la planète sélectionnée:
Planet *selectedPlanet = (Planet *)[planets objectAtIndex:row];
// //
Avec un NSDictionary, vous devez mapper les valeurs clés au numéro de ligne du sélecteur. Une façon de faire est de simplement définir les valeurs de clé pour les numéros de ligne et ajouter les objets personnalisés en tant que valeurs.
Ainsi le dictionnaire serait créé comme ceci:
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];
En titleForRow, vous feriez:
NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *planet = (Planet *)[items objectForKey:itemKey];
return planet.planetName;
En didSelectRow, vous feriez:
NSString *itemKey = [NSString stringWithFormat:@"%d", row];
Planet *selectedPlanet = (Planet *)[items objectForKey:itemKey];
Le UIPickerView est ne va pas regarder ou se comporter exactement comme la liste déroulante .net mais la fonctionnalité essentielle est là. Mis à part l'apparence, y a-t-il un problème spécifique que vous rencontrez? – DyingCactus
Je veux juste utiliser une paire clé-valeur pour la source de données pour UIPickerView. On dirait que ce n'est pas possible. J'ai un NSObject personnalisé [avec les propriétés Nom et ID]. Je définis les noms à afficher sur l'UIPickerView. Lorsque l'utilisateur sélectionne un nom, je dois trouver l'identifiant du nom et l'utiliser. Merci pour votre réponse. – Dave