[Débutant] 2 problèmes
CrazyJo
Membre
Bonjour,
Voilà j'essaie d'apprendre l'Obj-C/Cocoa et j'ai deux petites questions .
1. Comment afficher/cacher une fenêtre ?
J'ai essayé ceci : dans mon .h j'ai
mais cette ligne ne fonctionne pas et il n'indique même pas une erreur ou un warning... l'objet est connecté à la fenêtre
2.Comment vérifier si le NSTextField est plein, si non le dire à l'utilisateur.
j'ai tenté ceci :
J'ai fait des recherches sur le forum mais je n'ai trouvé que des lignes de code sans explications. J'espère avoir bien cherché :crackboom:-
Merci d'avance pour vos réponses
[/code]
Voilà j'essaie d'apprendre l'Obj-C/Cocoa et j'ai deux petites questions .
1. Comment afficher/cacher une fenêtre ?
J'ai essayé ceci : dans mon .h j'ai
[...]IBOutlet id MainWindow;[...]
et dans le .m j'ai cela :
<br />- (IBAction)UserName:(id)sender<br />{<br />[UserName setStringValue:[code][UserName1 stringValue]];<br />[UserNameScore setStringValue:[UserName1 stringValue]];<br />[MainWindow showWindow: self]; // la ligne qui embête <br />}
mais cette ligne ne fonctionne pas et il n'indique même pas une erreur ou un warning... l'objet est connecté à la fenêtre
2.Comment vérifier si le NSTextField est plein, si non le dire à l'utilisateur.
j'ai tenté ceci :
- (IBAction)UserName:(id)sender<br />{<br />[UserName setStringValue:[UserName1 stringValue]];<br />[UserNameScore setStringValue:[UserName1 stringValue]];<br />[MainWindow showWindow: self]; <br />if (UserName1 isEqualToString:@"") <br />[UserName setStringValue:@"Complete your name here"];<br />}<br />
mais là y'a une error mais ce n'est sans doûte pas une surprise.J'ai fait des recherches sur le forum mais je n'ai trouvé que des lignes de code sans explications. J'espère avoir bien cherché :crackboom:-
Merci d'avance pour vos réponses
[/code]
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
1) Montrer la fenêtre :
Comme ça c'est mieux, si tu veux ta fenêtre prête à utiliser en la faisant revenir devant :
Cacher la fenêtre :
2) Ca doit être bon, en mettant les crochets :
3) Bienvenue sur OC !!! J'espère que tu vas quand même payer ta tournée générale par cette chaleur !
2. Malgrès l'ajout des crochets ça ne marche pas . J'ai changé l'ordre par contre. Voici le code maintenant : Dans la console ça indique ceci lorsque je clique sur le bouton pour déclancher cette action : -[NSTextField isEqualToString:]: selector not recognized
3. Merci pour l'acceuil . et je veux bien payer une tournée virtuelle :P
edit HS : C'est cool le titre : Consommateur de chocolat puisque je suis Suisse
Pour atteindre la chaà®ne de caractères du NSTextField : [myTextField stringValue];
Pour obtenir l'info, commencer par lire la doc sur NSTextField. Un moyen pour obtenir cete page est de sélectionner NSTextField dans XCode, et utiliser help>Find Selected text In Api
Comme l'info voulue n'est pas dans cette page, elle peut l'être dans une sur-classe.
Regarder en début de cette page, on apprend que NSTextField est une sous-classe de NSControl, et dans cette page, on trouve stringValue
Bienvenu aux nouveaux
[size=10pt][shadow=red,left]C[/shadow][/size]omment faire si je veux connecter le même outlet à deux NSView ou plus ?
Ca n'a pas de sens... Un outlet correspond à un objet.
Par contre, Il y a un objet NSMatrix qui peut contenir plusieurs cellules...
J'ai des Warnings dans cette partie du code :
le self action:
Si on lance l'app tout fonctionne mais j'aimerais quand même savoir pourquoi il y ce Warning qui dit : "MainActions" may not respond to "-action" MainActions étant le nom de l'objet. Comment régler cela ?
Ca m'arrive dans mon projet, ce genre de chose, et je trouve que c'est assez pénible, qu'il ne puisse pas lire le code de manière globale et non ligne par ligne.
Non l'ordre des déclarations n'importe pas si on prend soin de séparer le .h et le .m
Effectivement c'était cela.merci
roh la gaffe :-\\
C'est étrange parce que chez moi j'ai juste déplacé une méthode "au dessus" d'une autre qui l'appellait, et le warning "may not respond to maMethode" a disparu !
De plus, je fais moin .h en premier, puis je copie colle les entêtes du .h dans mon .m pour être sur de ne pas en oublier.
un mic-mac dans les #import ?
euh ???
#import "maClasse.h" fait déjà cette copie et permet au compilateur d'éviter de dupliquer les déclarations.
C'est juste que je copie colle les entêtes de mon .h dans le .m, mais je les modifie. Je fais juste cette manip pour être sur de ne pas en oublier.
du genre dans mon point .h si j'ai
Je copie colle ces deux lignes dans mon .m, puis je les modifies en enlevant le point virgule que je rempalce par deux accolades.
Comme ça je gagne du temps, je ne me trompe pas dans la recopie éventuelle d'un nom de méthode.
Et pour le warning, c'était ma faute, je trouvais ça étrange quand même qu'il faille implémenter dans l'ordre ! J'avais en effet rajouté un paramètre à ma méthode qui était appelée par le notification center, alors qu'elle n'avait pas de paramètre dans le .h.
Merci beaucoup !
Oui, je fais de même
Le principal c'est que lorsqu'on appelle une méthode dans du code, elle ait été précédemment déclarée ou définie. Dans le .h (dont le code est inclus avant le contenu du .m via le #import) ou dans le .m, au choix.
- Ce qui fait que si on déclare tout dans le .h, on a ainsi toutes les billes et on peut appeler ce qu'on veut dans l'ordre qu'on veut ensuite, puisqu'il connait la signature des méthodes grace au .h. On est d'ailleurs obligé de fare ça comme ça si on a des méthodes qui s'appellent l'une-l'autre par exemple.
- Mais si on appelle une méthode qui n'est pas déclarée dans le .h mais déclarée (voire définie) plus haut dans le .m, ça marche aussi (c'est juste un peu moins "conventionnel")
Voilà pourquoi dans les 2 cas que vous avez testé dans vos posts, les 2 solutions fonctionnaient, du moment que la méthode appelée soit AVANT dans le .m
En plus, le jour où vous aurez besoin d'appeler les fonctions / méthodes d'une autre fonction / classe, vous comptez faire comment ?
Tu veux dire dans le .m, je suppose ?
le C, et donc l'objective C est très permissif.
Mais il ne faut pas utiliser ces permissivités car elles compliquent tout, sans apporter grand chose ...
Oui, bien sûr, je conseille de mettre dans le .h ou je déconseille de mettre dans le .m, on s'est compris