60 votes

comment définir par programme l'action pour barButtonItem dans swift 3?

Voici ce que j'ai utilisé précédemment,

 var barButtonItem = UIBarButtonItem(image: backImgs, style: UIBarButtonItemStyle.plain, target: self, action: Selector("menuButtonTapped:"))
 

Mais il y a quelques changements de syntaxe pour Swift 3. Merci d'avance.

119voto

Tony Vincent Points 5257

ex:-

 navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))
 

62voto

flame3 Points 1397

Résumez la méthode la plus utilisée dans Swift 3 pour ajouter une action à un bouton de barre.

  1. Barbutton avec texte

     navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: #selector(addTapped))
     
  2. BarButton avec votre propre image

     navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(named:"add"), style: .plain, target: self, action: #selector(addTapped))
     
  3. BarButton avec image système

     navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
     

38voto

Onuray Sahin Points 1444

Si quelqu'un utilise customView :

 barButtonItem.customView?.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(onBarButtonItemClicked)))
 

14voto

Nirav D Points 53910

Vous avez juste besoin de changer votre syntaxe selector à partir de Swift 3, vous devez spécifier le premier nom de paramètre de la méthode dans votre appel de fonction afin de changer votre sélecteur comme ceci.

 #selector(menuButtonTapped(sender:))
 

Et votre méthode devrait être comme ça.

 func menuButtonTapped(sender: UIBarButtonItem) {

}
 

12voto

Une ligne de code sur Swift 3 pour iOS 10.1:

 navigationController?.navigationBar.topItem?.rightBarButtonItem = UIBarButtonItem(title: "Add", style: .plain, target: self, action: nil)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X