2011-08-01 5 views
3

J'ai une application qui est basée sur un UINavigationController; Je souhaite ajouter une page "Setting" où l'utilisateur aura la possibilité de définir certaines fonctionnalités comme la langue et d'autres préférences. Actuellement, le UIViewController dans lequel je souhaite avoir les champs Setting est de 2 niveaux sous le RootViewController (ie il y a une "main view" >> vous cliquez sur un bouton et entrez un autre UIViewController et formez là vous devriez pouvoir entrer dans le Setting UIViewController). Je ne suis pas clair sur la façon dont je suis censé enregistrer ces données et comment l'appeler lors de la charge de l'application. J'ai lu des blogs sur NSUserDefaults et sur Singleton, mais je ne sais pas comment les utiliser.iOS: Comment créer une fonctionnalité "User Preferences"

Où devrais-je créer les attributs de données qui maintiendront plus tard les préférences de l'utilisateur? Dois-je les créer sur AppDelegate ou sur MySettingsViewController (le UIViewController que je crée)?

Devrais-je utiliser un attribut Singleton, et si oui, où devrait-il être créé?

Lorsque vous dites "Singleton", voulez-vous dire créer un attribut statique? Existe-t-il un autre moyen de communiquer entre deux contrôleurs qui ne sont pas directement connectés l'un à l'autre (je peux transférer des données du ViewController "inférieur" au RootViewController en le passant par le UIViewController au milieu, mais cela inefficace)?

Toute direction/tutoriel sera apprécié!

Répondre

12

Utilisez certainement NSUserDefaults. C'est génial, et Apple le recommande.

Pour définir un paramètre:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Setting 1"]; 

Vous pouvez également stocker d'autres choses, telles que le texte, chiffres, etc. Bien plus qu'un booléen simple.

Pour vérifier le réglage:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Setting 1"]) { 
    //ok, do the thing here 
} 
+0

InAppSettingsKit utilise NSDefaults dans les coulisses. Pourquoi réinventer la roue? – coneybeare

+0

Je n'ai pas vu l'autre commentaire, mais au lieu de télécharger le kit, c'est juste deux lignes si vous voulez faire une chose. Et NSUserDefaults peut être utilisé pour beaucoup plus de choses que de simples paramètres. Par exemple, se souvenir d'un achat in-app. –

+0

Jack, comment je suis censé utiliser exactement ce que vous aviez suggéré? J'ai plusieurs questions à ce sujet: –

4

J'utiliserais http://inappsettingskit.com/ plutôt que de lancer le mien. Je l'ai utilisé dans presque toutes les applications sur lesquelles je travaille et il gère les paramètres de l'application parfaitement pour ce genre de scénario.

+0

Merci pour la référence! Je vais certainement vérifier. –

+0

Merveilleuse recommandation. –

Questions connexes