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.
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:
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é.
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
. Donnez une étiquette à chaque bouton en suivant l'image suivante
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.
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]);
}
Vous pouvez utiliser IBOutletCollection
le lien suivant vous aidera à utiliser ce
http://useyourloaf.com/blog/2011/03/28/interface-builder-outlet-collections.html
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