Date Picker
Rocou
Membre
Bonjour,
J'ai ajouté un objet "Calendar Date Picker" sur mon interface. Je l'ai lié à un objet de type "Text Field" et ainsi de façon automatique, la date choisie par un clic dans mon objet DatePicker, apparaà®t dans mon Text Field.
(J'ai choisi un peu au hasard l'action "TakeObjectValueFrom" au moment du lien entre mes deux objets...)
Mon souci est que le format de la date affichée ne me convient pas du tout. J'imagine que plutôt que d'envoyer directement les données à l'affichage, celles-ci doivent passer dans mon "contrôleur" afin d'être formatées et renvoyées vers le TextField.
Mais en pratique, comment faire? Je n'y arrive pas du tout.
J'ai ajouté un objet "Calendar Date Picker" sur mon interface. Je l'ai lié à un objet de type "Text Field" et ainsi de façon automatique, la date choisie par un clic dans mon objet DatePicker, apparaà®t dans mon Text Field.
(J'ai choisi un peu au hasard l'action "TakeObjectValueFrom" au moment du lien entre mes deux objets...)
Mon souci est que le format de la date affichée ne me convient pas du tout. J'imagine que plutôt que d'envoyer directement les données à l'affichage, celles-ci doivent passer dans mon "contrôleur" afin d'être formatées et renvoyées vers le TextField.
Mais en pratique, comment faire? Je n'y arrive pas du tout.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ensuite, dans cette action, récupérer la date, la formater et la faire afficher dans le champ.
Oui, c'est ce que j'ai tenté de faire mais je sèche sur la façon de faire afficher cette date dans le champ.
-J'ai codé (copier/coller plutôt...) une action:
J'ai lié mon objet DatePicker à mon contrôleur en choisissant l'action datePickerAction.
J'ai déclaré un outlet (IBOutlet NSTextField* dateresult;)
Mais ensuite, que dois-je faire? Comment lier cet outlet à mon champ?
Intuitivement, ça me semble être une bonne idée mais comment faire cela? :why?:
De la même manière qu'on lie un objet au contrôleur pour l'action, sauf que c'est dans le sens inverse !
C'est que je pense avoir fait mais cela n'a aucun effet sur l'affichage.
Pour être sûr: tu pars du cube bleu représentant le contrôleur vers le champ et dans la liste qui s'affiche, tu choisi le bon outlet?
EDIT: bon, les liens ne sont pas en cause, c'est mon action qui n'est pas bonne. En modifiant mon action en mettant
return [dateresult setStringValue:@toto];, "toto" s'affiche correctement dans mon champ quand je clique sur le objet DatePicker.
Ma question est donc: comment récupérer dans mon action la valeur envoyée par l'objet DatePicker?
Dans le code de mon action, je fais ceci:
NSDate* theDate = [datePickerControl dateValue];
if (theDate)
{...}
theDate est à nil.
J'ai bien déclaré NSDatePicker* datePickerControl;
mais comment faire pour "lier" mon objet DatePicker à cette déclaration?
???
Mon DatePicker est déjà relié à mon contrôleur. J'ai choisi une action. C'est dans cette action que je dois récupérer la valeur envoyée par le DatePicker. Mais comment?
Il est lié dans le sens action, c'est pas pour autant qu'il est lié dans le sens outlet !
Mais c'est vrai que tu peux aussi le récupérer au niveau de l'action, puisque c'est l'argument "sender".
Je te remercie pour tes réponses mais elles sont trop succinctes pour moi.
Juste faire glisser, dans IB, le DateFormatter sur ton NSTextField, et basta, pas une ligne de code à faire. Non ?
Ben là apparemment ton objet "datePickerControl" vaut "nil"... Normal, il n'est pas initialisé.
Fais en un NSOutlet, et connecte le dans Interface Builder comme tu as connecté le champ !
C'est pas sorcier ???
Sinon, la solution simple oui, mettre directement un NSDateFormatter dans IB ; mais il faut quand même que tu saches faire une connexion outlet / action dans les 2 sens entre un contrôleur et un objet ; c'est la base
Oui, je te remercie, c'est très bien mais j'aimerais tout même savoir comment récupérer la valeur émise par mon date picker, la manipuler et transmettre le résultat à un champ.
Ce que je ne comprends pas, c'est que cette valeur est très bien transmise à mon champ quand je lie mon datepicker directement au champ mais quand je le lie à mon contrôleur, je n'arrive pas à la récupérer, elle est égale à nil.
@schlum: Excuse moi mais je ne comprends rien du tout. J'ai l'impression que nous ne parlons pas de la même chose
http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/01Introduction/chapter_1_section_1.html
Tu y apprendras ce que sont les "actions" et les "outlets" et comment on tire les liens sous Interface Builder.
On va peut-être y arriver...
Pour la troisième fois :
Ce qu'il faut déclarer, c'est :
Puis mettre à jour dans IB (avec glisser&déposer ou à partir du menu...)
Et faire le lien d'outlet exactement comme ça a été fait avec le champ !!!
Sinon, comment veux-tu qu'il soit connecté à ton sélecteur de date ? magie ??