Impossible de créer un Outlet dans mon .h

JazzManoJazzMano Membre
mars 2012 modifié dans Xcode et Developer Tools #1
Bonjour, pour faire court, j'ai exactement le même problème que ce monsieur :



http://forum.cocoaca...teur-assistant/



Mais je ne comprend pas sa réponse.



J'ai ouvert un topique sur ce site qui explique plus en détail mon problème :



http://www.siteduzer...h.html#r7226323



Par exemple, je met dans mon mainstoryboard 3 vue dans lesquels je souhaite avoir un bouton et un label pour faire une appli type HelloWorld. Je peux lier le label de la vue 1 à  mon ViewController.h mais pas le label de la vue 2 ou 3, il ne veux pas faire la connection en Outlet.



J'ai cru au début qu'il fallait faire un ViewController.h pour chaque vue mais d'un, je ne sai pas comment créer un nouveau ViewController.h et de deux, au vu du message au dessus (premier lien), ça na pas l'air d'être ça.



J'ai 3 jours de retard sur les objectifs de ma semaine à  cause de ce problème et je commence à  être complétement démoraliser de buter sur un truc aussi simple. Pourriez-vous m'aidez ?



Merci à  vous.

Réponses

  • Kalamus33Kalamus33 Membre
    mars 2012 modifié #2
    Bonjour,



    Parfois le .h que IB te montre n'est pas le bon... il faut basculer de Manual à  Automatique dans certains cas...



    Je viens de regarder ton second lien où tu explique par l'image ton problème, et je pense que tu t'y prends mal pour ton QCM (je demande l'indulgence des maà®tres de ce lieu, si ce que je dis est faux...).



    Solution 1 : Pour faire la même chose, j'utiliserais une ViewController unique, avec laquelle j'afficherais à  la volée par code la question et les 4 réponses. Soit quelques labels et 4 boutons (avec leur actions) à  placer. Avantage : tu peux jouer sur le nombre de réponses etc



    Solution 2 : Je crée comme toi un ViewController dans IB, je place mon titre et mes 4 réponses. Et ton bouton Suivant, ne ferait que rafraichir la même view en lui passant le tableau des données (NSArray qui contient titre, réponses) et le numéro de la question courante...



    Suis pas sûr d'avoir été clair !
  • JazzManoJazzMano Membre
    mars 2012 modifié #3
    C'est surement très clair mais étant complétement novice, j'ai un peu de mal à  te comprendre.



    1. Qu'est-ce que le Manual et Automatique ? A quoi fais-tu référence ?



    2.Dans ta solution 1, j'ai 10 quesions en tout, du coup je ne vois pas comment les mettres toutes avec leurs réponses et annexes à  chacune.



    3. Ta solution 2 serait parfaite pour moi mais est-ce facile à  faire ? Je doit sortir mon appli vendredi pour te donner mon planning. Si oui, est-ce que tu as un exemple ou un tuto quelque part ?



    4. Je vois le terme IB de plus en plus souvent, c'est quoi ?



    Merci beaucoup pour t'es réponses, je m'y prend surement très mal pour faire mon QCM mais je n'ai pas vu d'autre moyen avec le peut de conaissance que j'ai sur xcode. J'était pas loin d'abandonner aujourd-hui...



    Je me renseigne sur ce qu'est le NSAray en attendant ta réponse, merci encore.
  • IB = Interface Builder, c'est l'outils qui te permet de gérer graphiquement tes view (placer tes boutons, labels, etc.)
  • KixxxKixxx Membre
    Tu peux ajouter localement un fichier Property List (plist) contenant toutes les questions et réponses.

    Il te suffira alors de charger celui-ci dans un NSDictionary et de jouer avec celui-ci.



    Sinon, je te conseillerai, si tu maà®trise pas storyboard, de te lancer dans un projet sans storyboard ^^.

    (Tu auras un XIB par UIViewController)
  • Hum, pour vendredi je pense que tu va être un peu court en temps...



    1. Dans ta deuxième image, tu as ta fenêtre divisée en 2 écrans, dont celle de droite corresponds au .h. Au dessus, dans la barre de statut de l'éditeur du .h il est écrit : MANUAL > ViewController > No Selection.

    C'est ce MANUAL là  dont je te parlais, parfois le .h montré n'est pas celui de l'éditeur IB... tu clic sur Manual et tu choisis Automatique



    2. J'ai pas d'exemple et si tu vois pas comment marche un NSArray j'ai quelques doutes pour vendredi !



    3. IB = Interface Builder... c'est l'outil de la partie gauche de ton écran (sur ta copie écran), l'éditeur de design en gros...
  • JazzManoJazzMano Membre
    mars 2012 modifié #7
    D'accord merci à  tous pour vos réponses, oui je sais que c'est pas très intelligent de ce lancer comme ça dans l'aventure sans préparer le terrain mais je doit tenir mes objectifs de la semaine/mois, du coup je suis obliger faute de temps de sortir l'appli avec le minimum de fonctionnalité pour en suite la mettre à  jours quotidiennement si je peux pour qu'elle ressemble à  ce que j'en attend.



    C'est une méthode pour garder le moral dans un projet et toujours aller de l'avant. Au pire j'essaye de terminer l'appli aujourd'hui en laissant le schéma actuelle, au mieu d'ici vendredi j'aurais eu le temps de faire ce que vous me proposez avec le NSarray et NSDictionary. Merci encore pour votre aide et bonne journée !
  • Kalamus33Kalamus33 Membre
    mars 2012 modifié #8
    Je confirme :


    c'est pas très intelligent de ce lancer comme ça dans l'aventure sans préparer le terrain




    Ce que je fais ci-dessous n'est ni pédagogique ni productif pour toi (ni pour moi !), mais bon je suis de bonne humeur cette aprem, il fait beau....



    Dans IB :



    Tu crée tous les labels et les 4 boutons + le bouton next

    Tu fais pointer next vers l'action : nextButton

    Et tu fais pointer les 4 bouton sur la même action : repAction



    ViewController.h





    #import <UIKit/UIKit.h>



    @interface ViewController : UIViewController



    @property (nonatomic, retain) NSMutableArray *qcm;

    @property (nonatomic) NSInteger currentQuestion;



    @property (retain, nonatomic) IBOutlet UILabel *titreLabel;

    @property (retain, nonatomic) IBOutlet UILabel *q1Label;

    @property (retain, nonatomic) IBOutlet UILabel *q2label;

    @property (retain, nonatomic) IBOutlet UILabel *q3Label;

    @property (retain, nonatomic) IBOutlet UILabel *q4label;



    - (IBAction)repAction:(id)sender;



    - (IBAction)nextButton:(id)sender;



    @end



    Dans le ViewController.h





    #import "ViewController.h"



    @interface ViewController ()



    @end



    @implementation ViewController

    @synthesize titreLabel;

    @synthesize q1Label;

    @synthesize q2label;

    @synthesize q3Label;

    @synthesize q4label;



    @synthesize qcm, currentQuestion;



    - (void)viewDidLoad

    {

    /color][color=#385789]super[/color][color=#000000] [/color]viewDidLoad[color=#000000;

    // Do any additional setup after loading the view, typically from a nib.



    qcm = /color]NSMutableArray[color=#000000] [/color][color=#5a80a7]new[/color][color=#000000;



    [qcm addObject : [NSMutableDictionary dictionaryWithObjectsAndKeys:

    @Titre question 1, @titre,

    /color][color=#c05710]NSNumber[/color][color=#000000] [/color][color=#5a80a7]numberWithInt[/color][color=#000000]:[/color][color=#385789]1[/color][color=#000000,@bonnereponse,

    [NSArray arrayWithObjects:@rep10,@rep11,@rep12,@rep13,nil], @reponses,

    nil

    ]];



    [qcm addObject : [NSMutableDictionary dictionaryWithObjectsAndKeys:

    @Titre question 2, @titre,

    /color][color=#c05710]NSNumber[/color][color=#000000] [/color][color=#5a80a7]numberWithInt[/color][color=#000000]:[/color][color=#385789]0[/color][color=#000000,@bonnereponse,

    [NSArray arrayWithObjects:@rep20,@rep21,@rep22,@rep23,nil], @reponses,

    nil

    ]];



    currentQuestion = 0;



    NSLog(@%@qcm";, qcm);



    }



    - (void)viewWillAppear:(BOOL)animated {

    /color][color=#385789]self[/color][color=#000000] [/color]affichage[color=#000000;

    }



    - (void) affichage {

    titreLabel.text = [/color]qcm[color=#000000] [/color]objectAtIndex[color=#000000]:[/color]currentQuestion[color=#000000 valueForKey:@titre];



    for(int i=0; i<[[/color]qcm[color=#000000] [/color]objectAtIndex[color=#000000]:[/color]currentQuestion[color=#000000 valueForKey:@reponses] count]; i++) {



    UILabel *monLabel = (UILabel *)color=#385789]self[/color].[color=#5a80a7]view[/color] [color=#5a80a7]viewWithTag[/color]:i+[color=#385789]100[/color;

    monLabel.text = [[/color]qcm[color=#000000] [/color]objectAtIndex[color=#000000]:[/color]currentQuestion[color=#000000 valueForKey:@reponses] objectAtIndex:i] ;



    }

    }



    - (void)viewDidUnload

    {

    /color]self[color=#000000] [/color][color=#5a80a7]setQcm[/color][color=#000000]:[/color]nil[color=#000000;

    /color][color=#385789]self[/color][color=#000000] [/color]setTitreLabel[color=#000000]:[/color][color=#385789]nil[/color][color=#000000;



    /color][color=#385789]self[/color][color=#000000] [/color]setQ1Label[color=#000000]:[/color][color=#385789]nil[/color][color=#000000;

    /color][color=#385789]self[/color][color=#000000] [/color]setQ2label[color=#000000]:[/color][color=#385789]nil[/color][color=#000000;

    /color][color=#385789]self[/color][color=#000000] [/color]setQ3Label[color=#000000]:[/color][color=#385789]nil[/color][color=#000000;

    /color][color=#385789]self[/color][color=#000000] [/color]setQ4label[color=#000000]:[/color][color=#385789]nil[/color][color=#000000;

    /color][color=#385789]super[/color][color=#000000] [/color]viewDidUnload[color=#000000;

    // Release any retained subviews of the main view.

    }



    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

    {

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

    }



    - (IBAction)repAction:(id)sender {

    UIButton *monBouton = (UIButton*) sender;

    if(monBouton.tag == [[/color]qcm[color=#000000] [/color]objectAtIndex[color=#000000]:[/color]currentQuestion[color=#000000 valueForKey:@bonnereponse] intValue]+200) {

    // ici pour action sur bonne réponse

    NSLog(@bonne reponse);

    } else {

    // ici pour action sur mauvaise réponse

    NSLog(@ko);

    }



    }



    - (IBAction)nextButton:(id)sender {

    currentQuestion += 1;

    if(currentQuestion >= /color]qcm[color=#000000] [/color]count[color=#000000) currentQuestion -=1;

    /color][color=#385789]self[/color][color=#000000] [/color]affichage[color=#000000;



    }

    - (void)dealloc {



    /color]qcm[color=#000000] [/color]release[color=#000000;

    /color]titreLabel[color=#000000] [/color]release[color=#000000;



    /color]q1Label[color=#000000] [/color]release[color=#000000;

    /color]q2label[color=#000000] [/color]release[color=#000000;

    /color]q3Label[color=#000000] [/color]release[color=#000000;

    /color]q4label[color=#000000] [/color]release[color=#000000;

    /color][color=#385789]super[/color][color=#000000] [/color]dealloc[color=#000000;

    }

    @end
  • Précisions :



    @Kixxx : à  raison sur tous les points qu'il évoque et tu devrais modifier mon code en conséquence pour ta prochaine...



    J'ai fais au plus simple et suis passé par IB pour poser les boutons réponses et label, car je sens que tu es plus à  l'aise avec, mais l'idéal est de le faire dans le code, en dessinant tes objets directement... mais bon je pense que tu as encore quelques trucs à  voir avant !
  • Houa, super ! Je compte me former complétement à  partir d'avril donc ton aide m'est quand même très précieuse vu qu'elle me permet d'avancer pour ce mois ci, pas si inutile que ça, j'espère que tu le comprend. Je serai plus souple sur les objectifs du mois prochain pour justement avoit le temps de me former mais je ne pensais pas rencontrer autant de difficulté pour un si petit programme.



    Merci beaucoup pour ton code je l'analyse et ce soir je vous dirai si je peux me débrouiller sans aide supplémentaire. Profitez du beau temps et merci encore.
  • Encore une précision... pour que ça marche, car je pense que tu verras pas le truc !...



    Tu remarquera les +100 et +200 dans mon code... c'est la numérotation des tags de mes view dans IB. Etant donné que j'ai 4 réponses, le label de la réponse a pour tag 100 (dans IB la fenêtre de propriétés à  droite, View -> Tag), pour la réponse 2, c'est 101 etc



    idem pour les bouton des réponse, le UIButton de la réponse 1, c'est 200, puis 201 etc
  • JazzManoJazzMano Membre
    mars 2012 modifié #12
    Et re,



    bon j'ai écris ton code ligne par ligne pour essayer de le comprendre, j'ai compris la plupart des lignes par deduction pour le reste je verrais ça à  tête reposé.



    Par contre je me retouve avec 10 erreurs rouge sur le -(void)deadalloc à  cause du "release"


    - (void)dealloc {



    [qcm release];

    [titreLabel release];



    [q1Label release];

    [q2Label release];

    [q3Label release];

    [q4Label release];

    color=#ee82ee]super[/color] [color=#0000ff]dealloc[/color;




    C'est les deux mêmes erreurs sur chaque lignes sauf pour " [titreLabel release]; " et " [q4Label release]; " ce qui est bizarre :



    1. ARC forbids explicit message send of "release"

    2."release" is unavailable: not available in automatic reference counting mode



    EDIT 1: Résolu, il suffit de désactiver Objective C automatic Reference Counting dans build setting.



    EDIT 2 : arf, 6 fois la même erreurs dans @synthesize :


    @synthesize titreLabel;

    @synthesize q1Label;

    @synthesize q2Label;

    @synthesize q3Label;

    @synthesize q4Label;

    @synthesize annexeLabel;




    Erreur : 1.@synthesize of "weak" property is only allowed in ARC or GC mode



    Cette erreur apparait quand je résout mon premier EDIT, c'est l'Objective C automatic Reference Counting sur OFF qui me fait ça.



    Du coup la question, c'est quoi ARC ?



    EDIT 4: résolu, j'ai laisser ARC gérer la mémoire en supprimant -(void)dealloc et j'ai remis mon l'OARC sur On.
  • Ok, c'est bon, le code marche, c'est super, je n'ai plus qu'à  m'interresser à  la Property List et ça devrais être bon. Je vous tiens au courant. Bonne soirée.
  • Bon, c'est peut-être un peu méchant ce que je vais dire... mais en 2 heures, tu as réussi à  poser tes questions et à  les résoudre ! Avais tu vraiment cherché avant de poster ? Pour faire clair, il y a beaucoup de bonnes volontés sur ce forum, et je suis la première à  en profiter, mais il faut essayer de ne pas trop en abuser... Un minimum de recherche personnelle avant de crier "au secours", çà  ne fait pas de mal. D'ailleurs, lorsque tu trouves par toi même après quelques heures de recherche, tu imprimes plus et tu évites de reproduire les mêmes erreurs par la suite... (j'en sais quelque chose).

    Enfin, même si c'est un truc bête, rien ne t'interdit de dire ce que tu as fait pour que çà  fonctionne, çà  pourra aider un autre débutant qui fera l'effort de faire une recherche sur Google s'il a le même problème...

    Amicalement image/kiss.gif' class='bbc_emoticon' alt=':-*' />
  • JazzManoJazzMano Membre
    mars 2012 modifié #15
    Excuse moi mais je ne comprend pas, tu as surement mal lu car je fais exactement ce que tu me préconise. Je pose mes questions/problèmes en même temps que je recherche les différentes solutions pour en suite éditer mon dernier poste pour que l'utilisateur lambda qui rencontre les mêmes problèmes ai la solution sous les yeux.



    Comme tu la dis, je ne me suis pas contenté de poser ma question et puis d'attendre, au contraire. Bon, après, si tu ne la pas vue, c'est que ce n'est pas très visible, du coup je vais mettre un peux de couleur dans tout ça.



    Bonne journée.



    EDIT : Par contre si tu parle de mon tout premier poste ou je demande de l'aide, oui j'ai fais des recherches pendant plusieurs jours sans succés car c'est difficile quand on ne sait pas précisément ce que l'on cherche et les mots clés à  utiliser, la preuve, apparament je m'y prennai très mal en faisant 10 vues pour 10 questions. Si j'ai poster ici, c'est que j'avais déjà  entrepris toute les démarches en mon pouvoir (et aussi par manque de temps) mais il y'à  un moment ou l'on à  tous besoin d'un professeur pour avancer.
  • JazzManoJazzMano Membre
    mars 2012 modifié #16
    Tiens, je viens de résoudre mon tout premier problème, je ne pouvais pas connecter un objet dans mon ViewController.h depuis une deuxième vue/fenêtre.



    C'est parce que la classe de mon File's Owner (dans la barre en dessous de la vue, le rond jaune à  coter du carré First Responder) était un UIViewController alors que ce devrait être un ViewController.

    Pour changer le nom de la classe, il faut aller (dans IB) à  droite dans les options "show the identify inspector" et changer le nom de la classe.



    C'est ça qui ma fait perdre 3 jours de travail, c'est à  ce taper la tête contre le mur.
  • AliGatorAliGator Membre, Modérateur
    mars 2012 modifié #17
    Ca fait partie des choses qui sont expliquées dans la doc sur "Understanding XIB files"...



    On fait l'erreur une fois, et après on a compris (m'enfin 3 jours pour ça...). Si on n'a pas compris avant en allant lire la doc.
  • Ok mais pour un novice qui ne vas pas forcément lire toute la doc d'un coup à  ses débuts, savoir qu'il faut aller chercher dans cette doc, la section "Understanding XIB files" pour régler le problème au dessus, ça me semble pas aussi évident que ça. Quand on ne sait pas quoi chercher on ne trouve pas.
  • Tu en es où ? tu t'en tire avec mon code ? as tu réussi à  exécuter l'appui dans le simulateur ?
  • JazzManoJazzMano Membre
    mars 2012 modifié #20
    Bonsoir Kalamus,



    Oui l'appli tel que tu me la donné ( le -(void)dealloc en moins car il me cause une erreur de type ARC) fonctionne bien dans le simu, maintenant je dois comprendre comment faire pour que :



    1. comment sélectionner la bonne réponse (A par ex)

    Actuellement si je clique sur A,B,C ou D ça passe au titre 2 quand même. Je me penche sur ça là , ça doit pas être bien compliqué.



    2. Comment afficher un "bravo !" + mon annexe au titre une fois la bonne réponse cliqué.

    Ca, je crois savoir faire, avec un NSString et cà¦tera.



    3. Ecrire un .plist et en suite le charger dans mon projet puis l'appeller avec un code.

    Même chose ici, je crois avoir trouvé, add file --> ressource--> property list et écrire dedans, par contre pour l'appeller dans mon code je n'ai pas d'idée pour l'instant mais j'ai mis quelques sites en favorie ayant rapport à  ça.



    4.Trouver la méthode la plus rapide pour écrire mes 642 questions dans un fichier .plist et les incorporées à  mon code.



    5.Trouver des explications sur la base de donnée de l'iphone.

    (j'ai pas bien compris si c'était du SQLite SQL ou autre chose)



    D'autres points viendront surement après plus divers truc théorique que je n'ai pas encore assimilé, donc j'aurais quelques questions pour vous demain si vous le voulez bien. Voilà , encore merci pour ton code Kamalus et bonne soirée.
  • 1. Tu dois avoir fait pointer tes 4 boutons sur la mauvaise action : tu dois les faire pointer de IB vers :



    - (IBAction)repAction:(id)sender



    Car c'est lui qui gère la bonne réponse pour la question courante. La bonne réponse pour chaque question est dans le array :



    /color][color=#C05710]NSNumber[/color][color=#000000] [/color][color=#5A80A7]numberWithInt[/color][color=#000000]:[/color][color=#385789]0[/color][color=#000000,@bonnereponse... c'est le chiffre 0 ici qui dit que c'est la première réponse qui est la bonne, 1 pour la deuxième etc





    En fait tu dois faire un cinquième bouton que tu appel "suivant" par exemple et qui pointe vers :



    - (IBAction)nextButton:(id)sender



    pour passer à  a question suivante.



    2. tu rajoute un label dans IB que tu relis dans ton .h et que tu nomme par exemple msgLabel dans le quel tu écris ton message. Ensuite ton action doit devenir :



    - (IBAction)repAction:(id)sender {

    UIButton *monBouton = (UIButton*) sender;

    if(monBouton.tag == [[/color]qcm[color=#000000] [/color]objectAtIndex[color=#000000]:[/color]currentQuestion[color=#000000 valueForKey:@bonnereponse] intValue]+200) {

    // ici pour action sur bonne réponse

    NSLog(@bonne reponse);

    msgLabel.hidden = NO;

    } else {

    // ici pour action sur mauvaise réponse

    NSLog(@ko);

    ​msgLabel.hidden = YES;

    }



    Remarque : pour faire afficher le document lié à  la bonne réponse, tu dois ajouter une entrée dans ton array qui donne le nom du fichier (l'url, le doc ou ce que tu veux) et tu l'ouvre dans une autre ViewController...
  • JazzManoJazzMano Membre
    mars 2012 modifié #22
    Ha d'accord, je comprend mieux cette histoire du /color][color=#C05710]NSNumber[/color][color=#000000] [/color][color=#5A80A7]numberWithInt[/color][color=#000000]:[/color][color=#385789]0[/color][color=#000000, donc ça c'est OK.



    Pour le msgLabel, j'ai fait comme tu me la indiqué mais le problème c'est que le message "bravo !" apparait dès le lancement du programme mais disparait une fois que l'on à  cliqué sur une mauvaise réponse et réapparait une fois la bonne réponse choisie.



    J'ai essayé de faire ça :


    - (IBAction)repAction:(id)sender {

    UIButton *monBouton = (UIButton*) sender;



    if(monBouton.tag == [[[qcm objectAtIndex:currentQuestion] valueForKey:@bonnereponse] intValue]+200) {



    NSString *lemessage = NSString alloc] initWithFormat:[/color][color=#ff0000]@&quot;Bravo &#33;&quot;[/color;

    msgLabel.text = lemessage;



    // ici pour action sur bonne réponse

    NSLog(@bonne reponse);

    msgLabel.hidden = NO;

    } else {

    // ici pour action sur mauvaise réponse

    NSLog(@ko);

    msgLabel.hidden = YES;




    Mais ça fait la même chose.



    Tiens, je te met une image de l'app que je veux faire, tu comprendras mieux je pense :



    0e3d569c-01f4-403d-bfc6-b2a1334cafb4.jpg



    Déjà , comme lui j'arrive à  avoir le bouton back mais pas le bouton Next, pourtant il me semble que c'est bien un boutton de base d'iphone, non ?



    La "référence : PMPBOK Guide 4th edition, page 423", c'est ce que j'appelle mon annexe, c'est le label qui apparait quand la bonne réponse est séléctionnée.



    Lui il n'a pas de "Bravo !" ou de "bonne réponse" qui s'affiche mais simplement le bouton qui passe en rouge si la mauvaise réponse est cliqué et en suite en vert est affiché la bonne réponse.

    Dans l'idéal, j'aimerais avoir la même chose mais si j'ai trouvé comment changer la couleur d'un texte dans un label, je n'ai pas trouvé pour changer la couleur d'un bouton, c'est indiqué nulle part et je n'ai pas l'impression que ce soit une image avec un fond vert qu'il utilise, si ?
  • Kalamus33Kalamus33 Membre
    mars 2012 modifié #23
    1. Tu change de vue à  chaque question ou tu fais comme mon code, juste un rafraichissement ?



    2. Dans la fonction -(void)affichage tu met : msgLabel.hidden = YES, comme ça le message ("bravo" ou autre) est caché à  chaque chargement de question. Et tu supprime ton blabla du bravo dans l'action du bouton et tu écrit ton texte "bravo" dans IB (pour le UILabel)



    3. Pour changer la couleur du label tu fais du genre :



    nomdulabel.color = [UIColor redColor]; // couleur du texte

    nomduLabel.backgroundColor = [UIColor blueColor]; // couleur du fond



    4. Pour ton annexe, tu rajoute une entrée dans ton array :


    <br />
    [qcm addObject : [NSMutableDictionary dictionaryWithObjectsAndKeys:<br />
    @&quot;Titre question 1&quot;, @&quot;titre&quot;,<br />
    [NSNumber numberWithInt:1],@&quot;bonnereponse&quot;,<br />
    @&quot;Blabla de mon annexe&quot;, @&quot;annexe&quot;,<br />
    [NSArray arrayWithObjects:@&quot;rep10&quot;,@&quot;rep11&quot;,@&quot;rep12&quot;,@&quot;rep13&quot;,nil], @&quot;reponses&quot;,<br />
    nil<br />
    ]];<br />
    






    Tu rajoute dans IB un autre UILabel (comme pour "bravo"), par exemple annexeLabel.



    Tu cache le label comme pour bravo dans la fonctionna affichage.



    Tu modifie ton action du genre :


    <br />
    - (IBAction)repAction:(id)sender {<br />
    UIButton *monBouton = (UIButton*) sender;<br />
    if(monBouton.tag == [[[qcm objectAtIndex:currentQuestion] valueForKey:@&quot;bonnereponse&quot;] intValue]+200) {<br />
    // ici pour action sur bonne réponse<br />
    NSLog(@&quot;bonne reponse&quot;);<br />
    annexeLabel.text = [[qcm objectAtIndex:currentQuestion] valueForKey:@&quot;annexe&quot;] ;<br />
    annexeLabel.hidden = NO;<br />
    } else {<br />
    // ici pour action sur mauvaise réponse<br />
    NSLog(@&quot;ko&quot;);<br />
    annexeLabel.hidden =YES;<br />
    }<br />
    }<br />
    
Connectez-vous ou Inscrivez-vous pour répondre.