Partage
  • Partager sur Facebook
  • Partager sur Twitter

[ios]Utilisation d'une fonctionn pour une classe

Sujet résolu
    19 septembre 2012 à 16:55:21

    bonjours,
    Vous savez comment utiliser une fonction sur une classe entière
    Ex:dire que tous les les bouton de l'application soit rouge sans devoir écrire du code pour tous les bouton
    (genre:bouton.rouge,bouton2.rouge,sa prendra trop de temps)
    Merci de me répondre
    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2012 à 17:21:18

      Tu peux soit passer par Interface Builder si tu as construit ton interface via cet outil sinon si tu fais tout dans le code tu peux faire un truc du genre (dans ton ViewController) :

      for(UIButton *button in self.view.subviews)
      {
        button.backgroundColor = [UIColor redColor];
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        19 septembre 2012 à 17:49:51

        je t'aime ,nan je déconne merci mais pourquoi tu as pensé a çà
        mais attend je vois que tu a écris *bouton donc tu pense que je cherche a faire sur un bouton particulier alors que je cherche a faire sur tout les bouton,enfin,dis moi si tu avais compris çà
        • Partager sur Facebook
        • Partager sur Twitter
          19 septembre 2012 à 18:27:10

          Comme tu peux le voir il s'agit d'une boucle for :

          Pour chaque bouton (UIButton *button) qui sont dans la vue (self.view.subviews) on met le background de ce bouton en rouge.

          Pour résumer ça met le background rouge pour chaque bouton d'une vue.
          • Partager sur Facebook
          • Partager sur Twitter
            19 septembre 2012 à 18:41:41

            okay ,je ne savais pas que il y'a aussi des prépositions dans la programation(in),je suppose que çà fonctionne aussi pour les inaction

            édit:il me dit problème sigabirt alors que j'ai rien connecter,et c'est mon bute car j'ai trop de bouton,que faire?
            • Partager sur Facebook
            • Partager sur Twitter
              22 septembre 2012 à 12:39:41

              up toujours le problème sigabirt si j'utilise ta technique
              • Partager sur Facebook
              • Partager sur Twitter
                23 septembre 2012 à 2:43:00

                Perso J'aurai rajouté un kindOfClass pour m'assurer que la subView est bien un uibutton.

                Sinon une autre solution serait d'utiliser le protocole UIAppearance fournis avec iOS5 (à placer dans la methode didFinishLaunchingWithOptions):

                [[UIButton appearance] setBackgroundColor:[UIColor redColor]];
                

                • Partager sur Facebook
                • Partager sur Twitter
                  23 septembre 2012 à 14:42:53

                  mais donc là c'est juste pour changer l'apparence mais si je veux faire maintant une action pour tous les classe en une fois,je suis obligé de les connecté?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 septembre 2012 à 17:01:43

                    UP je cherche toujours a savoir comment utiliser une action,ou utilisé une méthode sur tout les bouton qui sont sur ma view sans devoir les connecter au fichier H
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 septembre 2012 à 17:08:04

                      Tu créés une classe du genre ToolClass dans laquelle tu fais une méthode static.

                      Dans le .h :

                      @interface ToolClass : NSObject
                      {
                      }
                      
                      +(IBAction) setButtonColor:(UIColor*) c forView:(UIView*) v;
                      


                      Le .m :

                      @implementation ToolClass
                      
                      +(IBAction) setButtonColor:(UIColor*) c forView:(UIView*) v
                      {
                        for(UIButton *button in v)
                        {
                          button.backgroundColor = c;
                        }
                      }
                      
                      @end
                      


                      Et ensuite tu peux appeler cette fonction (dans n'importe quelle autre classe) de cette manière :
                      [ToolClass setButtonColor:[UIColor redColor] forView:self.view];
                      
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 septembre 2012 à 20:43:43

                        au pinaise,jvai essayer di suite(ou réellement dans une heure)mais merci je te dis quoi si sa fonctionn(et si sa fonctionne pas d'alleurs)


                        édit:ils me dise use of undeclared identifier ToolClass
                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 septembre 2012 à 8:19:21

                          Dans la classe dans laquelle tu appelles la fonction :

                          [ToolClass setButtonColor:[UIColor redColor] forView:self.view];

                          Il faut rajouter l'import du header :

                          #import "ToolClass.h"
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 octobre 2012 à 18:04:40

                            hein! ok,je crois que sa va fonctionner merci je te dis quoi
                            • Partager sur Facebook
                            • Partager sur Twitter
                              2 octobre 2012 à 18:38:03

                              je croyais que c'était enfin bon mais c'est sigabirt comme problème que je reçois de nouveau
                              • Partager sur Facebook
                              • Partager sur Twitter
                                3 octobre 2012 à 17:24:17

                                Ashbay, tu as testé ton code dans la méthode setButtonColor? Il faudrait plutôt faire:

                                +(IBAction) setButtonColor:(UIColor*) c forView:(UIView*) v
                                {
                                    for (UIView *subView in [self.view subviews]) {
                                        if ([subView isKindOfClass:[UIButton class]]) {
                                            [subView setBackgroundColor:c];
                                        }
                                    }
                                }
                                

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 octobre 2012 à 17:51:44

                                  Citation : Horiel

                                  Ashbay, tu as testé ton code dans la méthode setButtonColor?



                                  Effectivement il y avait une coquille dans mon code... voici une rectification qui fonctionne :

                                  +(void) setButtonColor:(UIColor*) c forView:(UIView*) v
                                  {
                                    for(UIButton *button in v.subviews)
                                    {
                                      button.backgroundColor = c;
                                    }
                                  }
                                  
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    3 octobre 2012 à 18:31:02

                                    Dans ton code tu change le backgroundColor de toute les subviews. Il faut le faire que pour les uibutton (d'ou le kindOfClass).
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      4 octobre 2012 à 8:03:33

                                      Citation : Horiel

                                      Dans ton code tu change le backgroundColor de toute les subviews. Il faut le faire que pour les uibutton (d'ou le kindOfClass).



                                      Effectivement, tu as raison. J'étais persuadé que si tu itérais sur des UIButton ça ne prenait en compte que les UIButton mais non, ça prend en compte toutes les UIView.
                                      Donc tenez compte du code d'Horiel ! Et pas du mien.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        5 octobre 2012 à 20:49:29

                                        edit:j'ai un problème au niveau du self,il me dise de mettre -> à la place du . et ensuite c'est faux il me marque Member reference base type Class' is not a structure or union

                                        Citation

                                        +(IBAction) setButtonColor:(UIColor*) c forView:(UIView*) v
                                        {
                                        for (UIView *subView in [self.view subviews]) {
                                        if ([subView isKindOfClass:[UIButton class]]) {
                                        [subView setBackgroundColor:c];
                                        }
                                        }
                                        }


                                        http://hpics.li/dc47194
                                        ET comment je dois faire si je veux faire une autre action pour tous les bouton et que se soit une action que je choisit moi
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          12 octobre 2012 à 21:32:25

                                          Re-bonjour,Horiel ma donner la réponse c'est qu'il faut marquer dans le fichier m ceci
                                          +(IBAction) setButtonColor:(UIColor*) c forView:(UIView*) v
                                          {
                                              for (UIView *subView in [v subviews]) { 
                                                  if ([subView isKindOfClass:[UIButton class]]) {
                                                      [subView setBackgroundColor:c];
                                                  }
                                              }
                                          }
                                          
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          [ios]Utilisation d'une fonctionn pour une classe

                                          × 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