Renommer un bouton

ZyrolZyrol Membre
06:24 modifié dans API AppKit #1
Bonsoir,

Juste un petit truc surement simple pour vous...
Je voudrais changer le nom d'un NSButton, j'ai donc placé cette instruction :
[dualPause setTitle:"Reprise"];

dualPause est bien sur le nom du bouton (de l'Outlet)

c'est quoi le probleme ?

Réponses

  • décembre 2004 modifié #2
    Hello,

    As tu bien vérifié que la connexion est bien faite dans IB? Sinon, si tu appelles ce code dans le -init, de ton crontrôleur, ça ne peut pas aller. Il faut alors le déplacer dans le -awakeFromNib.

    Note modo: J'ai déplacé ton message et cré un nouveau sujet. Il vaut mieux dans ce genre de cas le faire. Tu auras plus facile à  retrouver les réponses, et une personne qui se pose la même question trouvera plus facilement aussi.
  • ZyrolZyrol Membre
    06:24 modifié #3
    Hou là  !!! c'est un peu flou pour moi ça...
    J'ai crée une Outlet (dans mon controleur.h) comme ceci :
    IBOutlet id dualPause;

    et ensuite j'ai lié ma classe controleur au bouton dans IB.
    Apparemment tu me parles de le lier avec le -awakeFromNib, coment faire ? je n'ai pas l'honneur de connaà®tre ce -awakeFromNib !!

    Merci pour ton aide.
  • 06:24 modifié #4
    - (void)awakeFromNib
    {
    }

    Pour être complet indique que le fichier nib est chargé. Si tu essaye d'utiliser un outlet avant (par exemple dans le init) le code n'aura aucun effet car cet outlet/object vaut null
  • BruBru Membre
    06:24 modifié #5
    dans 1102958960:

    Bonsoir,

    Juste un petit truc surement simple pour vous...
    Je voudrais changer le nom d'un NSButton, j'ai donc placé cette instruction :
    [dualPause setTitle:"Reprise"];

    dualPause est bien sur le nom du bouton (de l'Outlet)

    c'est quoi le probleme ?


    J'espère que tu as correctement tapé la commande :
    [dualPause setTitle:[size=14pt]@[/size]"Reprise"];

    Car sans le , effectivement, ça peut pas marcher !

    .
  • ZyrolZyrol Membre
    06:24 modifié #6
    dans 1102973025:

    - (void)awakeFromNib
    {
    }

    Pour être complet indique que le fichier nib est chargé. Si tu essaye d'utiliser un outlet avant (par exemple dans le init) le code n'aura aucun effet car cet outlet/object vaut null


    Je suis désolé, mais là  j'avoue être noyé...
    Je n'ai pas un haut niveau de prog en objective-C et là , il me manque un maillon pour comprendre...
    Avant vos messages, je n'avais pas la connaissance des nib ou awakeFromNib. Je me contentais de programmer de façon : un bouton = une action et des fonctions séparées dans le code.
    Je pensais que pour changer l'affichage d'un bouton c'était plus simple (Aussi simple que de le griser par exemple)  :crackboom:-

    Je sent que je vais créer un autre bouton si c'est trop complexe... 
  • BruBru Membre
    06:24 modifié #7
    dans 1102973766:

    dans 1102973025:

    - (void)awakeFromNib
    {
    }

    Pour être complet indique que le fichier nib est chargé. Si tu essaye d'utiliser un outlet avant (par exemple dans le init) le code n'aura aucun effet car cet outlet/object vaut null


    Je suis désolé, mais là  j'avoue être noyé...
    Je n'ai pas un haut niveau de prog en objective-C et là , il me manque un maillon pour comprendre...
    Avant vos messages, je n'avais pas la connaissance des nib ou awakeFromNib. Je me contentais de programmer de façon : un bouton = une action et des fonctions séparées dans le code.
    Je pensais que pour changer l'affichage d'un bouton c'était plus simple (Aussi simple que de le griser par exemple) :crackboom:-

    Je sent que je vais créer un autre bouton si c'est trop complexe...


    Oublie -(void)awakeFromNib. Renaud voulait simplement savoir où dans ton code tu fais le setTitle.

    Le plus important, c'est effectivement la bonne connexion dans IB entre ton bouton et l'instance de ta classe contrôleur. Et surtout, le nom de l'outlet doit être identique entre IB et XCode (attention aux majuscules/minuscules).

    Parfois, il faut "nettoyer" (menu Build, puis Clean All Targets) la compil pour forcer XCode à  tout recompiler (et surtout à  refaire tous les liens).

    .
  • ZyrolZyrol Membre
    06:24 modifié #8
    La liaison est bonne : Ctrl-clic du cube controleur vers le bouton et liaison avec l'outlet dualPause.

    Ensuite j'ai inseré ce code dans mon controleur.m :

    [dualPause setTitle:"Reprise"];

    et j'obtiens cette erreur à  la compilation :

    Controlleur.m:254: passing arg 1 of `setTitle:' from incompatible pointer type


    ???
  • BruBru Membre
    06:24 modifié #9
    dans 1102975111:

    La liaison est bonne : Ctrl-clic du cube controleur vers le bouton et liaison avec l'outlet dualPause.

    Ensuite j'ai inseré ce code dans mon controleur.m :

    [dualPause setTitle:"Reprise"];

    et j'obtiens cette erreur à  la compilation :

    Controlleur.m:254: passing arg 1 of `setTitle:' from incompatible pointer type


    ???


    Bah oui, t'as oublié le @ devant ta chaà®ne "Reprise".

    Ecris plutôt ça et ça ira mieux :

    [dualPause setTitle:[size=22pt][/size]"Reprise"];

    .
  • ZyrolZyrol Membre
    06:24 modifié #10
    Super, merci !!

    Et par curiosité, poourquoi fallait il ce @ ???
  • Eddy58Eddy58 Membre
    06:24 modifié #11
    dans 1102975290:

    Bah oui, t'as oublié le @ devant ta chaà®ne "Reprise".

    Ecris plutôt ça et ça ira mieux :

    [dualPause setTitle:[size=22pt][/size]"Reprise"];



    Jamais 2 sans 3 Bru ! :) :P ;) ;)
  • Eddy58Eddy58 Membre
    06:24 modifié #12
    dans 1102975477:

    Et par curiosité, poourquoi fallait il ce @ ???

    Le @ indique au compilateur que ta chaine est un objet de classe NSString Zyrol. :o
Connectez-vous ou Inscrivez-vous pour répondre.