2010-05-11 5 views
0

Je cherche un moyen d'accéder aux paramètres de l'utilisateur (je suppose, NSUserDefaults?) Grâce à une action de bouton. Laissez-moi sauvegarder et expliquer. Ce que j'ai en ce moment sont 2 TextFields une étiquette et un bouton. L'utilisateur saisira des mesures dans les 2 TextFields. Lorsqu'ils appuient sur le bouton, l'étiquette affiche le volume de l'objet mesuré en gallons. Cette partie fonctionne très bien. Puis j'ai voulu donner à l'utilisateur des options pour sortir le volume en litres plutôt qu'en gallons. Je voudrais également donner à l'utilisateur des options pour saisir les mesures en centimètres. J'ai donc configuré un 'Settings.Bundle' et l'ai configuré avec 2 cellules 'Multi Value' (unités de mesure et unités volumétriques). Chaque cellule Multi Value possède sa propre liste d'unités différentes parmi lesquelles l'utilisateur peut choisir.Obtenir les paramètres via une action de bouton

Mon problème principal est que je ne sais pas comment accéder à ces paramètres via l'action du bouton. Je pense peut-être à ce tort, mais ce que je cherche est quelque chose comme;

Button Action 
    If settings key = 0 
    Then do the math in Inches, Display in Gallons 
    If settings key = 1 
    Then do the math in Centimeters, Display in Gallons 
    If settings key = 2 
    Then do the math in Inches, Display in Liters 
    If settings key = 3 
    Then do the math in Centimeters, Display in Liters 
Etc... 

Est-ce possible? Est-ce que je pense à cela de la mauvaise façon? Quelle est la meilleure façon de faire cela?

Répondre

1

Dans votre modèle, vous devez stocker les valeurs dans un type d'unité de mesure. Vous ne "faites pas le calcul" différemment selon l'unité utilisée, les calculs sont toujours les mêmes. Vous avez juste besoin d'accepter et d'afficher des unités de différents types.

Afin d'afficher et d'accepter les valeurs, vos champs de texte doivent utiliser NSValueTransformer. Une sous-classe de NSValueTransformer vous permet d'afficher une version transformée d'une valeur et, facultativement, de transformer en inverse la valeur en entrée. Donc, si votre modèle stocke des valeurs en centimètres, vous utiliserez un NSValueTransformer qui convertit les centimètres en pouces et dans sa méthode -reverseTransformValue:, convertit les pouces en centimètres. Ainsi, lorsque l'utilisateur tape une valeur en pouces, la valeur est stockée dans votre modèle en centimètres.

Dans votre cas, votre NSValueTransformer doit utiliser le paramètre d'unités en cours qui a été stocké dans NSUserDefaults pour modifier la façon dont il transforme les unités.

Questions connexes