Round Rect Button à  lier avec une action

infiniteseainfinitesea Membre
08:52 modifié dans API AppKit #1
Bonjour,

Je suis débutant et j'aimerai bien créer une application, le monde de l'informatique me passionnant. J'ai déjà  lu et suivi plusieurs tutoriels... Mais je rencontre quelques problèmes avec le SDK pour iPhone.

J'arrive à  créer l'interface mais une fois créée j'ai un petit problème. En fait j'aimerai bien lier un Round Rect Button avec un message qui apparait de façon aléatoire parmi une liste pré-définie de message.

J'ai déjà  essayer de lier l'action TouchUpInside avec le projet, je ne sais pas si c'est ce qu'il faut faire mais en tout cas cela ne marche pas.

Je serai très reconnaissant à  la personne qui pourrait m'aider.  ;)

Réponses

  • Philippe49Philippe49 Membre
    08:52 modifié #2
    Tu peux lire le tuto de Apple, excellente première approche

    iPhone Dev Center > iPhone Reference Library > Your First iPhone Application >

    Pour t'y rendre prendre le Menu Help > Documentation
    Prendre iPhone OS Library puis General
    Il sufit alors de dérouler la page


  • Philippe49Philippe49 Membre
    novembre 2008 modifié #3
    On construit un tableau (type NSArray) contenant les références à  4 chaà®nes constantes

    NSArray * messages=[[NSArray alloc] initWithObjects:
                        @Oh Combien de marins,,@Combien de capitaines,,@Qui sont partis joyeux pour des courses lointaines,,@Dans ce morne horizon se sont évanouis ! ,nil];

    [NSArray alloc] alloue la zone mémoire nécessaire au stockage d'objets de type arbitraire.
    initWithObjects  réalise le stockage des 4 adresses des chaà®nes de caractères dans la zone mémoire allouée précédemment. Les chaà®nes sont-elles crées à  un autre endroit de la mémoire.
    nil termine la liste. C'est également l'adresse particulière 0x0



    random()
    tire un nombre au hasard entre 0 et le plus grand int (2 milliards et quelques)

    [NSArray objectAtIndex:i]
    [NSArray objectAtIndex:0] pointe sur @Oh Combien de marins
    [NSArray objectAtIndex:1] pointe sur @Combien de capitaines


    [messages count]
    C'est le nombre d'éléments dans le tableau

    random()%[messages count]
    Un nombre entre 0 et [messages count]-1

    [myButton setTitle:message forState:UIControlStateNormal];
    met le message comme titre du bouton, lorsque celui-ci est en situation normal


  • infiniteseainfinitesea Membre
    novembre 2008 modifié #4
    dans 1225547184:

    dans 1225546363:
    ,

    En fait j'aimerai bien lier un Round Rect Button avec un message qui apparait de façon aléatoire parmi une liste pré-définie de message.


    NSArray * messages=[[NSArray alloc] initWithObjects:
                        @Oh Combien de marins,,@Combien de capitaines,,@Qui sont partis joyeux pour des courses lointaines,,@Dans ce morne horizon se sont évanouis ! ,nil];

    Pus effectuer dans le code le changement par
    NSString * message=[NSArray objectAtIndex:random()%[messages count]];
    [myButton setTitle:message forState:UIControlStateNormal];





    Merci beaucoup. Je me suis plongé dans la lecture de ces documents cet après-midi et cela m'a un peu éclairci, donc je vais mettre en pratique.

    J'aimerai bien comprendre ce code ce serai sympa que vous m'expliquiez, en fait la je comprends mais comment savoir tel mot va avec tel mot? Et ce code on le place dans quel sous-dossier le .m ou .h?

    Et c'est à  dire effectuer dans le code un changement? Lequel? Je dois mettre ce changement après chaque phrase aléatoire pré-définie?

    Merci beaucoup!
  • Philippe49Philippe49 Membre
    08:52 modifié #5
    Réponse au-dessus
  • Philippe49Philippe49 Membre
    08:52 modifié #6
    dans 1225559705:

    Et ce code on le place dans quel sous-dossier le .m ou .h?

    Mettre une IBAction dans le .h du contrôleur
    -(IBAction) changeTitle:(id) sender;


    Mettre le code ci-dessus dans l'implémentation (dans le .m)
    -(IBAction) changeTitle:(id) sender {
    }

    Dans IB connecter le bouton au contrôleur en choisissant l'action changeTitle.


  • infiniteseainfinitesea Membre
    novembre 2008 modifié #7
    Très bien, je vais lire tout ça!  ;)

    Qu'est ce que l'implémentation? Sinon je crois avoir compris mais je n'arrive pas à  mettre en place c'est à  dire qu'en gardant le même exemple des marins je n'arrive pas à  mettre en forme, je dois sauter des lignes, qu'est ce qui va avant, je le place où...?

    NSArray * messages=[[NSArray alloc] initWithObjects:
                        @Oh Combien de marins,",@Combien de capitaines,",@Qui sont partis joyeux pour des courses lointaines,,@Dans ce morne horizon se sont évanouis ! ,nil];



    Je ne dois rien mettre dans la parenthèse du Random?

    Si on prenait juste la première phrase "Oh combien de marins" ça donnerait ceci (le boutton se nommerai red rect)

    NSArray * messages=NSArray alloc] initWithObjects:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @&quot;Oh Combien de marins&quot;,nil];<br /><br />NSString * message=[NSArray objectAtIndex:[b]0[/b]random()%[messages count;
    [myButton RedRect:message forState:UIControlStateNormal];

    Merci, j'ai hâte de recevoir votre réponse  ::)
  • Philippe49Philippe49 Membre
    novembre 2008 modifié #8
    Je pense que tu attaques la programmation un peu trop haut.
    Qu'as tu comme expérience à  l'heure actuelle ?


    dans 1225569533:

    Qu'est ce que l'implémentation?

    L'implémentation c'est les lignes de code qui déterminent ce que fait une méthode, une fonction.

    dans 1225569533:

    je dois sauter des lignes, qu'est ce qui va avant, je le place où...?

    Le C (et donc l'Objective-C) accepte des sauts de ligne n'importe où. DOnc cela n'a pas d'importance.
    Tu peux écrire :
    NSArray * messages=[[NSArray alloc] initWithObjects:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @&quot;Oh Combien de marins&quot;,@&quot;Combien de capitaines&quot;,&quot;,@&quot;Qui sont partis joyeux pour des courses lointaines,&quot;,@&quot;Dans ce morne horizon se sont évanouis ! &quot;,nil];<br />
    
    ou
    NSArray * messages=[[NSArray alloc] initWithObjects:@&quot;Oh Combien de marins&quot;,@&quot;Combien de capitaines&quot;,&quot;,@&quot;Qui sont partis joyeux pour des courses lointaines,&quot;,@&quot;Dans ce morne horizon se sont évanouis ! &quot;,nil];<br />
    

    Cela n'a d'importance que la qualité de la lecture que tu en fais.

    dans 1225569533:

    Je ne dois rien mettre dans la parenthèse du Random?

    rien, cette fonction n'utilise aucun argument

    dans 1225569533:

    Si on prenait juste la première phrase "Oh combien de marins" ça donnerait ceci (le boutton se nommerai red rect)

    NSArray * messages=NSArray alloc] initWithObjects:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @&quot;Oh Combien de marins&quot;,nil];<br /><br />NSString * message=[NSArray objectAtIndex:[b]0[/b]random()%[messages count;
    [myButton RedRect:message forState:UIControlStateNormal];

    Merci, j'ai hâte de recevoir votre réponse  ::)

    Non pas vraiment : plutôt sans 0 devant random(), et le nom deu bouton

    NSArray * messages=NSArray alloc] initWithObjects:@&quot;Oh Combien de marins&quot;,nil];<br />NSString * message=[[s]NSArray[/s] messages objectAtIndex:random()%[messages count;
    [RedRect   setTitle:message forState:UIControlStateNormal];


  • infiniteseainfinitesea Membre
    08:52 modifié #9
    Si j'attaque un peu haut? c'est possible mais je ne sais pas par où commencer, j'ai déjà  fait quelques tutoriels de base.

    Je vais essayer de mettre ça en forme dans la journée et voir ce que ça donne!
  • NoNo Membre
    08:52 modifié #10
    dans 1225576795:

    ... et enlever NSArray de la méthode objectAtIndex: et le remplacer par messages (NSArray est une classe, et objectAtIndex: une méthode d'instance).
  • schlumschlum Membre
    08:52 modifié #11
    dans 1225613607:

    Si j'attaque un peu haut? c'est possible mais je ne sais pas par où commencer, j'ai déjà  fait quelques tutoriels de base.

    Je vais essayer de mettre ça en forme dans la journée et voir ce que ça donne!


    Si tu ne connais pas le C, attaque le C parce que les bases en sont nécessaires pour l'Objective-C...
    Ensuite, " Cocoa par la pratique " de A. Hillegass.
  • infiniteseainfinitesea Membre
    08:52 modifié #12
    Merci, y-a-t-il un livre particulier à  lire sur le C?
  • Philippe49Philippe49 Membre
    novembre 2008 modifié #13
    Pour apprendre le C, on peut se débrouiiler avec de bons tutoriels, il y a aussi de bons livres, c'est une question de choix.
    Une bonne liste se trouve sur le site developpez.com ou le site du zero. Mais il y en a surement ailleurs.

    Par contre comme le dit Schlum, pour Objective-C / Cocoa n'hésite pas à  acheter le livre de Hillegass (la 3ème édition en Anglais si cela ne te fais pas peur)
  • infiniteseainfinitesea Membre
    08:52 modifié #14
    OK, bon faut que je m'y lance et me motive surtout!
  • schlumschlum Membre
    08:52 modifié #15
    Pour le C, un p'tit tutoriel pas trop dur et pas trop barbant comme celui du site du zéro, puis " Le Langage C " de Kernighan et Ritchie, c'est l'idéal !
  • infiniteseainfinitesea Membre
    08:52 modifié #16
    Parfait, là  j'ai un peu de travail mais je vais réflechir à  tout ça dimanche!
Connectez-vous ou Inscrivez-vous pour répondre.