Activer/Desactiver tout les NSTextFields d'une NSView

Paisible.frPaisible.fr Membre
juin 2009 modifié dans API AppKit #1
Je travaille actuellement sur une Application CoreData.
J'ai plusieurs ecrans sont des NSView avec des "formulaires de saisie" à  base de NSTextView, NSDatePicker, etc..

Je souhaiterais que tout ces controles de saisies soit "disabled" par défaut et qu'ils passent en "enabled" lors du click sur un bouton "Edition"

Pour tester j'ai commencé  par transformer chacun des champs de saisies dans IBOutlet. Ce qui me permet de passer le champs en enabled/disabled très facilement. Seul problème c'est très vite extrèment fastidieux et lourd.

Du coup j'ai cherché à  automatiser la chose en essayant de créer un bout de code qui à  partir du NSView me permettrais d'obtenir la liste des NSTextFields (par exemple) contenu.
Je pensais m'en tirer facilement avec [NSView subViews], un test sur le type de champs (cellClass) et un peu de recursivité. Mais je n'y suis pas parvenu.   :'( :-\\

Auriez-vous des pistes, conseils, idées, pour m'orienter ou pour essayer de faire avancer le problème ?

Merci.

PS : il va s'en dire que j'ai pris l'exemple du NSTextField pour faire simple mais mes écrans auront également d'autres controlleurs tels que des NSDatePicker, etc...

Réponses

  • BaardeBaarde Membre
    23:54 modifié #2
    Une solution simple : Utiliser les bindings

    Tu peux ajouter une propriété à  ton contrôleur.
    @property(assign) BOOL controlsAreEnabled;
    


    Après cela, pour chaque contrôle, dans l'onglet Bindings de l'Inspector, tu peux lier la propriété Enabled au contrôleur, sur la clé controlsAreEnabled.

    Il suffit ensuite de modifier la propriété de ton contrôleur pour que tous les contrôle appliquent le changement :
    // MyController * controller;<br />[controller setControlsAreEnabled:NO];
    
  • Paisible.frPaisible.fr Membre
    23:54 modifié #3
    Merci Baarde 

    Comme quoi j'ai encore pas mal à  découvrir des bindings  ::)
Connectez-vous ou Inscrivez-vous pour répondre.