J'essaie de montrer/cacher un UIBarButtonItem
. J'ai ajouté un barButton
à droite dans le storyboard
. Ensuite, dans viewDidLoad
, j’ai fait passer le rightBarButtonItem
à nil
. Plus tard, je l'ai réglé sur le button
que j'ai ajouté dans le storyboard
. Voici mon code:
// Right barButtonItem added in storybord:
@IBOutlet weak var deleteBarButton: UIBarButtonItem!
// viewDidLoad
self.navigationItem.rightBarButtonItem = nil
// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton
Quand je mets self.deleteBarButton
au rightBarButtonItem
, rien ne se passe. Cela ne le montre pas. Qu'est-ce que je fais de mal et quel est le moyen correct/le plus efficace d'afficher/cacher un barButtonItem
?
Mise à jour
J'ai essayé ce qui suit:
self.deleteBarButton.hidden = true
Mais j'obtiens l'erreur suivante:
UIBarButtonItem
n'a pas de membre nommé 'hidden'
Je viens de recevoir la réponse! Tout ce que vous avez à faire est de créer un strong IBOutlet
, vous pouvez alors:
// viewDidLoad
self.navigationItem.rightBarButtonItem = nil
// Later on...
self.navigationItem.rightBarButtonItem = self.deleteBarButton
Mise à jour 2
Vous pouvez simplement régler le texte du bouton sur rien:
self.deleteBarButton.title = "";
Mise à jour 1
J'utiliserais la propriété enabled
pour éclairer le bouton comme suit (bien que cela ne rende pas complètement le bouton invisible, il permet à l'utilisateur de savoir qu'il ne réalisera pas d'action).
Cela peut servir de variable pour vous faire savoir que le bouton est caché dans votre cas:
Illuminé: (place dans ViewDidLoad)
self.deleteBarButton.enabled = true;
Assombri: (place plus tard)
self.deleteBarButton.enabled = false;
J'ajouterais ensuite ce qui suit pour le faire disparaître complètement:
self.navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.clearColor();
Essayez de créer votre bouton de barre manuellement dans viewDidLoad, puis affichez/cachez votre bouton.
Code:
var barButton: UIBarButtonItem!
func viewDidLoad() {
super.viewDidLoad()
barButton = UIBarButtonItem(title: "Title", style: .Plain, target: self, action: Selector("target_function"))
self.navigationItem.rightBarButtonItem = barButton
}
func someFunction() {
self.navigationItem.rightBarButtonItem = nil
// or
self.navigationItem.rightBarButtonItem = barButton
}
Celui-ci fonctionne parfaitement pour moi!
self.navBar.title = ""
self.navBar.enabled = false