FruityFred
  • Blog
  • Course à pied
    • Tests équipements
  • Randonnées
  • Magie
    • Tours de cartes
  • Recettes
    • Entrées
    • Plats
    • desserts
  • À propos
    • CV
    • Contact
  • Accueil
  • Développement
  • Gestion des préférences dans une application Cocoa

Gestion des préférences dans une application Cocoa

Cet article vous explique comment gérer les préférences d’une application Cocoa. Je considère que vous savez programmer en Objective-C, que vous connaissez un minimum Xcode et Interface Builder.

Identifiez votre application

Il est impératif que votre application ait un identifiant unique, sous forme d’un domaine, comme les packages en Java. Par exemple : org.glimpse-fr.monapplication.

  • Rendez-vous dans Xcode.
  • Dans l’arborescence de gauche, ouvrez la section Targets.
  • Faites un clic droit sur la cible en question (c’est le nom de votre programme) puis choisissez Get Info.

  • Une fenêtre s’ouvre. Dans l’onglet Properties, saisissez un identifiant unique dans le champ Identifier (par exemple : org.glimpse-fr.timetracker).

  • Fermez la fenêtre. Lors de la prochaine compilation, votre application aura son propre identifiant unique.

Créez la fenêtre des préférences

Dans Interface Builder, ajoutez une nouvelle fenêtre à votre application et ajoutez-y les champs nécessaires à la gestion de vos préférences : champs textes, cases à cocher, …

Dans le premier onglet de l’inspecteur de propriétés, dans la section Window puis Behavior, assurez-vous :

  • de décocher Release When Closed et Visible At Launch
  • de cocher Hide On Deactivate

comme ceci :

Connectez la fenêtre au menu Préférences

  • Ouvrez le MainMenu depuis la fenêtre qui contient les objets de votre application.
  • Ouvrez le menu NewApplication afin de rendre visible l’élément Preferences.
  • Faites un clic droit sur cet élément puis, tout en maintenant le bouton droit de votre souris enfoncé, glissez le curseur sur l’icône de votre fenêtre de Préférences : une ligne bleue apparaît.

  • Relâchez alors le bouton droit de la souris : une fenêtre apparaît.
  • Choisissez l’action makeKeyAndOrderFront:

Voilà, l’entrée de menu Préférences de votre application ouvrira votre fenêtre de préférences !

Stockage des valeurs préférées

Vous n’avez pas à vous soucier du stockage des valeurs préférées, c’est Mac OS X qui s’en charge grâce aux user defaults. Mais il faut tout de même dire à Mac OS X que les champs de votre fenêtre de préférences doivent être stockées et gérés automatiquement. Pour cela, vous allez devoir suivre les instructions suivantes pour chacun des champs qui représente une valeur de vos préférences :

  • Sélectionnez le champ.
  • Dans l’inspecteur de propriétés, affichez la section Bindings (l’icône représente un carré et un rond verts).
  • Dans la section Value, ouvrez (si ce n’est déjà fait) l’élément Value à l’aide du petit triangle gris.
  • Cochez la case Bind to puis sélectionnez Shared User Defaults Controller dans la liste déroulante.
  • Saisissez ensuite une valeur dans le champ Model Key Path et ne touchez pas au champ Controller Key (laissez la valeur par défaut : values).

Comme je l’ai dit plus haut, répétez cette opération pour chacun de vos champs de préférences. Si un champ stocke des données non scalaires, comme une couleur (NSColor) ou une date (NSDate), vous devez sélectionner la valeur NSUnarchiveFromData dans le champ Value Transformer. Le champ Value Transformer indique un nom de classe utilisée pour transformer la valeur du champ avant qu’elle soit utilisée (plus de détails ici). Pour toutes les valeurs scalaires (texte, booléen, nombre, …) il est inutile de spécifier quoi que ce soit, sauf si vous en avez besoin…

Voilà, Mac OS X stockera vos valeurs de préférences et maintiendra à jour votre fenêtre de préférences automatiquement !

Compilez puis lancez votre application. Ouvrez la fenêtre des préférences via le menu habituel et sélectionnez des valeurs. Quittez (proprement) votre application. Relancez votre application et retournez dans la fenêtre des préférences… Eh oui, vos préférences sont bien enregistrées et vous n’avez rien codé !

Pour les plus curieux d’entre vous (et les amoureux de la ligne de commande), ouvrez un Terminal puis lancez la commande suivante, en remplaçant org.glimpse-fr.timetracker par l’identifiant unique de votre application :

defaults read org.glimpse-fr.timetracker

Vous devriez voir les valeurs de vos préférences.

Utilisez les préférences depuis le code

C’est très simple.

id prefs = [[NSUserDefaultsController sharedUserDefaultsController] values];
// 'addTaskInICal' est le nom de la valeur préférée que l'on a indiqué dans
// Interface Builder, dans le champ Model Key Path de la section Bindings.
if ([[prefs valueForKey:@"addTaskInICal"] boolValue] == YES) {
   // Ajout de la tâche dans iCal
}

Recherche

Catégories

Nuage de tags

Alsace Apple avis cascade chaussures château Cocoa concert Corse course à pied cuisine du monde forêt GPS HDR Interface Builder iOS iPhone Islande jeu lac Laiterie légumes Mac Mac OS X magie marathon minimalisme neige OpenGL plage poisson randonnée Strasbourg thème graphique TomTom tour de cartes trail vallée volcan wok WordPress Xcode Écosse écologie île

Derniers articles

  • De l’avenir.

    18 avril 2017
  • Pebble Time + iSmoothRun

    21 juin 2015
  • IMG_0440

    Tebble – Table interactive et connectée

    27 mai 2015
  • thumbnail blog

    La Main de la Princesse

    25 février 2015
  • thumbnail blog

    Transferts

    20 février 2015

Amis

  • /teles
  • A.D.A.N.
  • After6PM
  • Bloc-notes de Darathor
  • Blog de Florian
  • Blog de Jeff
  • Blog'ele
  • Graine de kawa
  • Joël et Ophélie
  • NikoHK
  • R2G2
  • WebLife

Méta

  • Connexion
  • Flux RSS des articles
  • RSS des commentaires
  • Site de WordPress-FR

Facebook • Twitter • YouTube

Copyright © 2015 FruityFred. Tous droits réservés.
Avant de copier une partie de mon contenu, demandez-le moi