Aller au contenu


Photo

Cocher une case à cocher


  • Please log in to reply
14 replies to this topic

#1 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 21 octobre 2013 - 12:05

Hello !

j'arrive bien à déterminer l'état d'une case à cocher (merci la doc Apple :P ) mais je me demandais comment faire pour forcer une case à se cocher/décocher quand on appui sur un bouton…

J'ai bien entendu essayé ça :

([_case2 state]= NSOnState);

mais qui ne fonctionne pas…
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#2 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 21 octobre 2013 - 12:15

Réponse à moi-même : RTFM !!!

[_case2 setState:YES];

Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#3 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 21 octobre 2013 - 12:38

C'est bien c'est bien, tu commences à comprendre :P

Note quand même que les state des NSButton ne sont pas des boolean. Normalement tu utilises NSOnState, NSOffState et NSMixedState (et c'est marqué dans la doc :P).
Bon c'est quand même bien fait du côté d'Apple parce que le YES à la même valeur que NSOnState et le NO à la même valeur que NSOffState, donc ça marche quand même.


Fichier joint  Screen Shot 2013-10-21 at 12.43.16.png   31,34 Ko   5 Nombre de téléchargements 


Note aussi que tu ne peut jamais attribuer de valeur à une méthode (sauf avec les subscriptings mais il convertis l'affectation en un setter).
La phrase suivante est fausse. La phrase précédente est vraie.

#4 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 21 octobre 2013 - 14:24

Ha oui c'est vrai que j'avais essayé la première fois de mettre le NSOnState (vu dans la doc) mais avec state (car j'ai réussi et déterminer l'état de mes cases à cocher avec state) et non pas setState et du coup lors de mes tests je suis resté à YES plutôt que NSOnState (je sais pas très bien pourquoi d'ailleurs)…

D'ailleurs c'est logique d'utiliser NSOnState et les 2 autres puisqu'il y a 3 états possibles donc en Boolean ça serait compliqué à gérer… Déjà bien sympa d'accepter le YES et le NO (j'imagine que le TRUE et le FALSE fonctionnent aussi, mais j'essaye de me soigner de RB :zz-big-bien: )
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#5 FJA

FJA

    Maniaque du clavier

  • Membres
  • PipPipPipPip
  • 565 Messages :
  • Configuration:iMac [iMac5,1 (Intel Core 2 Duo)]
    MBA [MacBookAir4,2 (i5, 13,3")]
  • Sexe:Masculin
  • Localisation:Lille

Posté 21 octobre 2013 - 21:55

En Objective-C (et dans bien d'autre langage), l'accès aux variables/propriétés/attribues (ça dépends des langages) de fait par des getter/setter.
Pour une question de sécurité et d'intégrité.
Bien que pour Objective-C, l'accès via des getter/setter (<=> les accesseurs et les mutateurs), soit une obligation (me corriger si je me trompe) car les variables sont toutes confinées dans l'instances de l'objet (ou de la classe, mais uniquement accessible dans une "instance"), et donc le seul moyen d'y accéder c'est d'avoir des méthode pour le faire.

Pourquoi faire des getter/setter alors qu'on peu modifier directement la variable me direz vous.
Exemple tout bête (en pseudo code):
Soit la classe suivante:

GPS
  • kmPar: Nombre = Km parcouru
  • kmRestant: Nombre = Km restant jusqu'à destination
  • kmTotal : Nombre = Km total du trajet
Si l'augmente le nombre de Km parcouru, il faut évidemment diminuer les Km restant.
Le jour où tu fais ton dev, c'est logique et évident.
Mais si tu partage/reviens plus tard/réutilise ton code il n'ai pas dit que tu y pense.
Alors le plus simple c'est modifier les deux valeurs de façon "transparente" :
Fonction setKmPar(nouvelleValeur)
    kmPar = nouvelleValeur
    kmRestant = kmTotal - nouvelleValeur

Fonction setKmRestant(nouvelleValeur)
    kmRestant = nouvelleValeur
    kmPar = kmTotal - nouvelleValeur
Bien sur, dans code bien pensé, il y a une variable qui aurait été supprimée :P .

Ça permet aussi de faire des validations de valeurs, de faire une gestion de mémoire (même si avec avec @synthetize, c'est géré), et d'autre traitements...

Donc pour résumé, en Objective-C, à quelque exception près, on passe toujours par un setQuelqueChose: pour modifier une valeur dans une instance.

Ce message a été modifié par FJA - 21 octobre 2013 - 21:56 .



#6 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 22 octobre 2013 - 00:15


Alors correction : non, tu peux accéder directement aux variables d'une classe, comme en C++, RB ou encore Java. Il y a d'ailleurs le même genre de restriction d'accès avec @public / @private / @protected. Il faut juste que ces variables soient déclarées dans le .h et pas uniquement en extension de classe dans le .m. Pour y accéder, tu utilises l'opérateur "->" (comme en C / C++), du genre monInstance->maIVar. Il n'existe évidemment jamais de cas (et s'ils existent, c'est que le code est mal structuré) qui nécessite de faire ça (la seule exception, c’est dans certain cas où le monInstance est self). Passer par des property ou des méthodes, c'est ce qu'il faut faire. Cette encapsulation est facilitée et renforcée par OC 2.0 & ABI 64.


Après l'encapsulation de la POO n'est pas propre à Objective-C, même si le langage se prête à ce genre de chose. Que ce soit avec RB ou Java, c'est comme ça qu'il faut fonctionner.


Il faut préciser que grâce à Objective-C 2.0 et les property, tu as beaucoup moins de setter / getter à écrire : les variables sont automatiquement créées, ainsi que ses getter / setter associés. J'insiste - quand tu fait un @property, les méthodes xxx et setXxx sont créé, et inversement quand tu écris les getter / setter à la main sous la forme xxx et setXxx tu peut utiliser l'opérateur "." comme avec un @property.

La phrase suivante est fausse. La phrase précédente est vraie.

#7 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 22 octobre 2013 - 09:11

Heu… Bon je vais continuer mes petits exo là moi… :zz-big-cafe:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#8 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 22 octobre 2013 - 11:58

ZeKiller : le mieux pour toi c'est d'oublier ce qu'était Objective-C avant l'ABI 64 et la version 2.0.

Tu peut voir les @property de ta classe sous Xcode un peu comme les properties de ta classe sous RB. Oublie l'histoire des getter / setter et des ivars. Tu t'y intéressera quand tu maitrisera les bases d'Objective-C, si tu en as le besoin ^^
La phrase suivante est fausse. La phrase précédente est vraie.

#9 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 22 octobre 2013 - 14:50

ça va pas être trop dur d'oublier ce qu'était XCode avant pour moi :zz-big-blink:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#10 Petrus

Petrus

    Membre d'honneur

  • Membres
  • PipPipPipPipPipPip
  • 1 264 Messages :
  • Configuration:-
    MacBook Pro retina
    15 pouces late 2013
    i7 2,3 GHz - 16 Go - 512 Go
    MacOS 10.14.0
  • Sexe:Masculin
  • Localisation:Ziguinchor

Posté 09 novembre 2013 - 00:47

J'ajouterais d'ailleurs que écrire
([_case2 state]= NSOnState);
ça revient à écrire (en java ou RB) un truc du genre
case2.state()=TRUE;
, ce qui n'est pas possible : on ne peut affecter le retour d'une fonction (mis à part les pointeurs, mais là ça devient carrément tendancieux...).

• Vous avez besoin d'un développeur Mac freelance ? Je suis là  ! www.phylica.fr •

• Applications développées : Subs Factory Urubugu •


#11 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 11 novembre 2013 - 21:18

Oui tout à fait… D'ailleurs je me demande si en RB il existe une solution pour mettre une case à cocher en état indéterminé (le petit trait en plein milieu)… Chose hyper simple en Objective-C
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#12 BorakLeRouge

BorakLeRouge

    Hamster d'or (dort ?)

  • Membres
  • PipPipPipPipPipPipPip
  • 3 987 Messages :
  • Configuration:Mac Mini Core i7 2019 - 16Go - 2x1To SSD
  • Sexe:Masculin
  • Localisation:Cormeilles en Parisis.rb
  • Passions:Macintosh, Photo, Haute-fidélité, Ski, Roller, Call of Duty, Tactical Ops, Counter Strike, Worms 1

Posté 11 novembre 2013 - 22:37

Hein ? ? ? Hyper-simple en Objective-C, ça y est ZeKiller est corrompu au dernier degré.... Sniff...

Pour Xojo : On utilise dans ce cas state au lieu de value qui ne comprend que deux positions :
ZeSuperbeCheckboxDeLaMortQuiTue.state = checkbox.CheckedStates.Indeterminate

C'est quand même bien plus clair... non mais...

Ce message a été modifié par BorakLeRouge - 11 novembre 2013 - 22:39 .

Je fais mes sauvegardes sur NSA-Cloud !

Au bout de 10 ans, le vieux MacPro vient de laisser sa place à un MacMini i7...


#13 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 12 novembre 2013 - 10:17

Avec XCode tu peux le faire (aussi) dans l'IDE :zz-big-bien:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8

#14 BorakLeRouge

BorakLeRouge

    Hamster d'or (dort ?)

  • Membres
  • PipPipPipPipPipPipPip
  • 3 987 Messages :
  • Configuration:Mac Mini Core i7 2019 - 16Go - 2x1To SSD
  • Sexe:Masculin
  • Localisation:Cormeilles en Parisis.rb
  • Passions:Macintosh, Photo, Haute-fidélité, Ski, Roller, Call of Duty, Tactical Ops, Counter Strike, Worms 1

Posté 12 novembre 2013 - 14:45

Dans Xojo itou.

Espèce de vendu :)

Je fais mes sauvegardes sur NSA-Cloud !

Au bout de 10 ans, le vieux MacPro vient de laisser sa place à un MacMini i7...


#15 zekiller28

zekiller28

    Admin qui mord

  • Administrateurs
  • PipPipPipPipPipPipPipPipPip
  • 10 695 Messages :
  • Configuration:Toutes sortes de Mac du PPC à l'Intel et toute sorte de MacOS X De Panther Client à Maverick.
  • Sexe:Masculin
  • Localisation:Saint-Hilarion (78)

Posté 12 novembre 2013 - 15:33

Vendu… au moins cher :zz-big-blink:

Et devoir attendre la version Xojo pour faire ça… Hummm… :zz-big-cake:
Le site de ToolsX
Le site de ToolsXOptimizer

Apple Certified Mac Management Basics 10.12
Apple Certified Mac Management Basics 10.9 English
Apple Certified Mac Integration Basics 10.9 English
Apple Certified Associate Mac Integration 10.8
Apple Certified Mac Management Basics 10.8




0 utilisateur(s) en train de lire ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)