2015-01-11 6 views
12

Ho una voce del pulsante della barra delle impostazioni (impostata come elemento del pulsante della barra sinistra). Voglio solo visualizzare se l'utente è connesso.Come nascondere un elemento del pulsante della barra per determinati utenti

ho pensato che avrei potuto utilizzare il seguente per gli utenti anonimi

navigationItem.leftBarButtonItem = nil 

Ma allora come vorrei mostrare che non appena loggato?

risposta

28

È possibile memorizzare una copia del leftBarButtonItem in una proprietà strong e impostarlo indietro dopo gli utenti log-in.

var leftBarButtonItem : UIBarButtonItem! 

All'interno viewDidLoad

self.leftBarButtonItem = UIBarButtonItem(title: "test", style:   UIBarButtonItemStyle.Plain, target: nil, action: nil) 

Nella logica

if loggedIn 
{ 
    self.navigationItem.leftBarButtonItem = self.leftBarButtonItem 
} 
else 
{ 
    self.navigationItem.leftBarButtonItem = nil 
} 
3

Best Way è personalizzato con il tuo Bar buttom con immagine. Impostare barbuttom.image = nil su Nascondi per assegnare nuovamente l'immagine da mostrare. E non dimenticare di rendere il barbutton isEnabled come falso.

1

Ho più di 2 menuitems e rimuovi/aggiungi menuitem è un overhead. Questo frammento di codice ha funzionato per me.

func showMenuItem(){ 

    menuItemQuit.customView?.isHidden = false 
    menuItemQuit.plainView.isHidden = false 
} 

func hideMenuItem(){ 

    menuItemQuit.customView?.isHidden = true 
    menuItemQuit.plainView.isHidden = true 
} 
0

se si desidera nascondere/mostrare UIBarButtonItem: Per Swift 3

utilizzato al di sotto codice semplice:

Dichiarazione:

var doneButton = UIBarButtonItem() 

In viewDidLoad () o ViewWillAppear() o dove si desidera nasconderlo: [pulsante della barra hide]

self.navigationItem.rightBarButtonItem = nil 

in cui si desidera mostrare pulsante della barra: [utilizzare qualsiasi punto del codice]

self.navigationItem.rightBarButtonItem = self.doneButton 
     doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(YourViewController.dismissPicker))