web-dev-qa-db-fra.com

Comment connecter plusieurs boutons d'un storyboard à une seule action?

J'utilise actuellement Xcode 4.6 et je me demande simplement comment sélectionner plusieurs boutons sur différentes UIViews, mais sous un seul contrôleur de vue. Le clic CMD ne semble pas fonctionner. J'ai besoin de cette fonctionnalité, car dans Xcode 4.6, la seule façon de laisser deux boutons sur IB partager la même action est de les sélectionner en même temps, puis de faire glisser l'action vers votre contrôleur de vue.

Mon objectif ultime est d'obtenir deux boutons différents sur deux UIViews différents pour faire correspondre la même action à l'aide de storyboards dans Xcode 4.6. Y a-t-il un moyen de faire cela?

EDIT: J'utilise actuellement Xcode 4.6.1 sans aucune chance, passant à 4.6.2.

19
jab

Vous pouvez connecter plusieurs boutons à une seule action sans les sélectionner tous en même temps.

Cependant, après avoir créé l'action, vous devez enregistrer le fichier source contenant l'action avant que Xcode ne vous permette de connecter un autre contrôle à l'action.

Je l'ai fait avec Xcode 4.6.2:

connecting buttons to action

75
rob mayoff

Swift 3.0 Xcode 8.0+

Connectez tous les boutons à la signature de méthode ci-dessous. Assurez-vous que l'expéditeur de l'argument est de type UIButton (ou sous-classe de UIButton) afin de connecter le reste des boutons du storyboard .

@IBAction func dialconfigTapped(_ sender: UIButton) {}

Utilisez sender.tag pour identifier le bouton appuyé.

9
San

Suivez ces étapes

1. Créer IBAction dans View Controller

Dans le fichier .h

-(IBAction)action:(id)sender;

Dans un fichier .m

-(IBAction)action:(id)sender{


}

2. Connectez tous les boutons à cette action

enter image description here

. Donnez une étiquette à chaque bouton en suivant l'image suivante enter image description here

4. Maintenant, dans votre fonction d'action, mettez-les

    -(IBAction)action:(id)sender{

        UIButton *button=(UIButton*)sender;

        if(button.tag==1){

            //your stuff!
        }
        if(button.tag==2){

            //your stuff!
        }
        if(button.tag==3){

            //your stuff!
        }

    }

Courez et partez.

8

Vous devriez pouvoir le faire dans IB. Dans IB, pointez-les simplement sur le même IBAction dans la classe appropriée.

Lorsque l'action se produit, au cas où vous voudriez savoir à partir de quel bouton vous avez obtenu l'action, vous pouvez alors différencier les boutons de la méthode IBAction soit en lisant le texte du bouton, soit en utilisant le tag attribut que vous auriez dû définir à partir d'IB.

- (IBAction)buttonClicked:(id)sender {
    NSLog(@"Button pressed: %@", [sender currentTitle]);
    NSLog(@"Button pressed: %@", [sender tag]);
}
1
Srikar Appalaraju

Vous pouvez utiliser IBOutletCollection le lien suivant vous aidera à utiliser ce

http://useyourloaf.com/blog/2011/03/28/interface-builder-outlet-collections.html

0
Vinodh

Dans Xcode 5, après avoir défini l'action pour le 1er bouton, je dois créer l'application. Cela me permet ensuite de connecter l'action d'autres boutons à cette même méthode IBAction

0
onmyway133