web-dev-qa-db-fra.com

Afficher / masquer barButtonItem

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'

39
Jessica

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
75
Jessica

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();
25
Jake Chasan

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
}
6
mkz

Celui-ci fonctionne parfaitement pour moi!

self.navBar.title = ""
self.navBar.enabled = false
0
alitosuner