Image du bouton personnalisé sans cadre de bouton de réglage:
Vous pouvez utiliser init(image: UIImage?, style: UIBarButtonItemStyle, target: Any?, action: Selector?)
pour initialiser un nouvel élément à l'aide de l'image spécifiée et d'autres propriétés.
let button1 = UIBarButtonItem(image: UIImage(named: "imagename"), style: .plain, target: self, action: Selector("action")) // action:#selector(Class.MethodName) for swift 3
self.navigationItem.rightBarButtonItem = button1
Vérifiez ce document Apple. référence
UIBarButtonItem avec une image de bouton personnalisée utilisant un cadre de bouton
POUR Swift 3.0
let btn1 = UIButton(type: .custom)
btn1.setImage(UIImage(named: "imagename"), for: .normal)
btn1.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
btn1.addTarget(self, action: #selector(Class.Methodname), for: .touchUpInside)
let item1 = UIBarButtonItem(customView: btn1)
let btn2 = UIButton(type: .custom)
btn2.setImage(UIImage(named: "imagename"), for: .normal)
btn2.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
btn2.addTarget(self, action: #selector(Class.MethodName), for: .touchUpInside)
let item2 = UIBarButtonItem(customView: btn2)
self.navigationItem.setRightBarButtonItems([item1,item2], animated: true)
FOR Swift 2.0
et plus
let btnName = UIButton()
btnName.setImage(UIImage(named: "imagename"), forState: .Normal)
btnName.frame = CGRectMake(0, 0, 30, 30)
btnName.addTarget(self, action: Selector("action"), forControlEvents: .TouchUpInside)
//.... Set Right/Left Bar Button item
let rightBarButton = UIBarButtonItem()
rightBarButton.customView = btnName
self.navigationItem.rightBarButtonItem = rightBarButton
Ou utilisez simplement init (customView :) comme
let rightBarButton = UIBarButtonItem(customView: btnName)
self.navigationItem.rightBarButtonItem = rightBarButton
Pour le système UIBarButtonItem
let camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: self, action: Selector("btnOpenCamera"))
self.navigationItem.rightBarButtonItem = camera
Pour définir plus de 1 éléments, utilisez rightBarButtonItems
ou pour le côté gaucheleftBarButtonItems
let btn1 = UIButton()
btn1.setImage(UIImage(named: "img1"), forState: .Normal)
btn1.frame = CGRectMake(0, 0, 30, 30)
btn1.addTarget(self, action: Selector("action1:"), forControlEvents: .TouchUpInside)
let item1 = UIBarButtonItem()
item1.customView = btn1
let btn2 = UIButton()
btn2.setImage(UIImage(named: "img2"), forState: .Normal)
btn2.frame = CGRectMake(0, 0, 30, 30)
btn2.addTarget(self, action: Selector("action2:"), forControlEvents: .TouchUpInside)
let item2 = UIBarButtonItem()
item2.customView = btn2
self.navigationItem.rightBarButtonItems = [item1,item2]
Utiliser setLeftBarButtonItem
ousetRightBarButtonItem
let btn1 = UIButton()
btn1.setImage(UIImage(named: "img1"), forState: .Normal)
btn1.frame = CGRectMake(0, 0, 30, 30)
btn1.addTarget(self, action: Selector("action1:"), forControlEvents: .TouchUpInside)
self.navigationItem.setLeftBarButtonItem(UIBarButtonItem(customView: btn1), animated: true);
Pour swift> = 2,2, l'action devrait être #selector(Class.MethodName)
... par exemplebtnName.addTarget(self, action: #selector(Class.MethodName), forControlEvents: .TouchUpInside)
let camera = UIBarButtonItem(barButtonSystemItem: .Camera, target: self, action: #selector(Class.MethodName))
C'est beaucoup plus facile avec
Swift 4
ouSwift 4.2
dans votre
ViewDidLoad
méthode, définissez votre bouton et ajoutez-le à la barre de navigation.alors vous devez définir la fonction que vous avez mentionnée dans le paramètre d'action comme ci-dessous
Vous devez ajouter le
@objc
préfixe car il utilise toujours les éléments hérités (Objectif C).la source
Simplement configurer
UIBarButtonItem
avec customViewPar exemple:
ou utilisez
setFunction
:la source
Je viens de tomber sur cette question et voici une mise à jour pour Swift 3 et iOS 10:
C'est certainement beaucoup plus rapide que de créer l'UIButton avec toutes les propriétés, puis d'ajouter ensuite le customView à UIBarButtonItem.
Et si vous souhaitez changer la couleur de l'image du bleu par défaut au blanc par exemple, vous pouvez toujours changer la couleur de la teinte:
PS Vous devez évidemment changer le sélecteur etc. de votre application :)
la source
Dans Swift 3.0+,
UIBarButtonItem
configurez-le par programme comme suit:la source
Définition de LeftBarButton avec l'image d'origine.
la source
J'ai le même problème et j'ai lu les réponses dans un autre sujet, puis je résous une autre manière similaire. Je ne sais pas ce qui est le plus efficace. problème similaire
la source
C'est une chose folle de pomme. Lorsque vous dites self.navigationItem.rightBarButtonItem.title, il dira nil alors que sur l'interface graphique, il affiche Modifier ou Enregistrer. Fresher likes me prendra beaucoup de temps pour déboguer ce comportement.
Il est nécessaire que l'élément affiche Modifier dans le premier chargement, puis l'utilisateur appuie dessus.Il passera à Enregistrer le titre. Pour archiver cela, j'ai fait comme ci-dessous.
// la vue a été chargée dira Modifier le titre
// appuyez sur Modifier l'élément deviendra Enregistrer le titre
// appuyez sur Enregistrer l'élément affichera Modifier le titre
la source
iOS 11
Définition d'un bouton personnalisé à l'aide d'une contrainte:
la source
la source