Partage
  • Partager sur Facebook
  • Partager sur Twitter

[iOS] Appui sur bouton, détermination du bouton

Sujet résolu
Anonyme
    7 octobre 2012 à 21:42:03

    Bonsoir,

    voici mon problème :

    J'ai 10 boutons, chacun déclarés avec un nom différent de cette manière :

    @property (weak, nonatomic) IBOutlet UIButton *touche1;
    


    ensuite, j'ai crée une action comme ceci :

    - (IBAction)appuiTouche:(id)sender;
    


    Cette action est reliée aux 10 boutons.

    Maintenant, j'aimerais que lorsque l'utilisateur appui sur un bouton, suivant le bouton, il y a une action différente.

    Au lieu de créer 10 actions pour les 10 boutons, j'ai préféré en créer un seul pour faire plus "court", et je pense qu'en ayant attribué un nom différent à chaques boutons, on peux gerer les 10 boutons avec une seule action.

    L'action est sous cette forme :

    - (IBAction)appuiTouche:(id)sender {
        if (sender == @"touche1")
        {
            key = @"1";
        }
    etc..
    


    Le problème est que la condition ne fonctionne pas. Donc après l'appui sur le bouton, j'aimerais que les conditions puissent détecter sur quel bouton a appuyer l'utilisateur.

    J'aimerais donc savoir qu'elle condition je pourrais utiliser pour que cela fonctionne..

    Merci d'avance pour votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2012 à 23:19:22

      J'ai moi aussi voulu avoir l'index de mes boutons qui étaient sur les cellules dans un UITableView.
      Ce que tu dois faire, c'est faire une sub-class de UIButton, créer une Property, lors de l'initialisation de tes boutons, tu leur attribut un index, et ensuite tu créer dans la classe dans laquelle se trouve ton action "appuiTouche" un objet currentButton tu type de ta sub-class UIButton et tu fais :

      - (IBAction)appuiTouche:(id)sender {
          currentButton.myProperty = sender
          if (currentButton.myProperty == 1)
          {
              // code ici
          }
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        8 octobre 2012 à 8:26:12

        Pas la peine de faire une "subclass". Chaque élément graphique (UIView, UIButton, etc..) a un attribut "tag" . Il suffit de mettre des tags différents à tes boutons et dans ta fonction tu regardes de quel tag il s'agit :

        -(IBAction) appuiTouche: (id)sender
        {
            UIButton *btn = sender;
        
            if(btn.tag == 1)
            {
                // bla bla bla
            }
            else if(btn.tag == 2)
            {
                // bla bla bla
            }
            //etc...
        }
        


        Tu peux affecter le tag d'une vue/bouton directement dans InterfaceBuilder ou bien dans le code.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          8 octobre 2012 à 21:12:13

          Il n'y a vraiment aucun moyen d'utiliser la déclaration des boutons en IBOutlet afin de pouvoir savoir lequel à été sélectionné ?
          • Partager sur Facebook
          • Partager sur Twitter
            8 octobre 2012 à 21:33:44

            Je ne comprends pas ce que tu veux dire..
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              9 octobre 2012 à 19:07:58

              Bon pour le moment j'ai utilisé les tags !

              @Coolsinus :

              J'ai donc déclaré les boutons dans le fichier .h ("touche 1", "touche 2", etc..) et je suis quasiment sur d'avoir déja vu (sur internet ) un moyen de créer un seul IBAction pour gerer l'appui sur plusieurs boutons (ici : "touche 1", "touche 2", etc..)

              genre comme condition : if (sender == "touche1") (ça ne fonctionne pas, c'est un exemple !)

              Dans tout les cas j'ai une solution (le tag), mais je préfèrerais retrouver la solution que j'avais vu il y a un moment sur internet !
              • Partager sur Facebook
              • Partager sur Twitter
                9 octobre 2012 à 20:02:20

                Je ne comprend pas ce qui te déranges dans l'utilisation du tag ?

                Pour que cela soit plus compréhensible tu peux faire une enum qui reprend tes tags :

                dans ton .h (juste après les imports) :

                typedef enum
                {
                  RechercheBouton = 1,
                  ValidationBouton = 2
                }BoutonType;
                


                dans ton .m

                -(IBAction) appuiTouche: (id)sender
                {
                    UIButton *btn = sender;
                
                    if(btn.tag == RechercheBouton)
                    {
                        // bla bla bla
                    }
                    else if(btn.tag == ValidationBouton)
                    {
                        // bla bla bla
                    }
                    //etc...
                }
                

                • Partager sur Facebook
                • Partager sur Twitter

                [iOS] Appui sur bouton, détermination du bouton

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown