12

Qualcuno sa come nascondere uno rightBarButtonItem di un UINavigationController? Nella mia applicazione, ho un pulsante di modifica come rightBarButtonItem di un UINavigationController. Voglio nascondere questo? UIBarButton` quando alcune operazioni sono terminate.Nascondere il dirittoBarButtonItem di un controller di navigazione

+0

'self.navigationItem.rightBarButtonItems [1] setEnabled: NO];' se si dispone di un array, ad esempio se si utilizza uno spazio flessibile. –

risposta

11

Prova

self.navigationItem.rightBarButtonItem = nil; 

Quando si vuole indietro anche se si deve instanciate un esempio tasto

UIBarButtonItem *rightBarButton = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch 
               target:self 
               action:@selector(searchBar:)]; 
self.navigationItem.rightBarButtonItem = rightBarButton; 
[rightBarButton release]; 
+1

e se non volessi ricreare l'oggetto? per esempio, voglio nascondere rightBarButton a wide frame di searchBar su titleView di navigationBar. Voglio dire, nascondere è possibile cambiando proprietà o qualcosa del genere? –

+0

se si desidera sottoclasse UINavigationController. puoi fare: self.topViewController.navigationItem.rightBarButtonItem = rightBarButton; self è la tua classe personalizzata UINavigationController –

15

per nascondere il tasto destro: self.navigationItem.rightBarButtonItem = nil;

Ora, per vederlo:

  1. Se si imposta il pulsante destro nel controller della vista assegnandolo a self.editButtonItem, è sufficiente assegnarlo nuovamente per visualizzarlo:

    self.navigationItem.rightBarButtonItem = self.editButtonItem;

  2. Se si imposta il pulsante destro nel controller di visualizzazione allocando e iniziando un UIBarButtonItem, è sufficiente mantenere un riferimento a UIBarButtonItem nel controller di visualizzazione e assegnarlo di nuovo quando è necessario visualizzarlo.

+0

Ho provato ad assegnare rightBarButtonItem a nil in Objective C non funziona per me –

10

Se hai bisogno di nascondere/visualizzare il pulsante sulla base di alcune condizioni, provate questo:

if (condition) { 
    self.navigationItem.rightBarButtonItem.title = @""; 
    self.navigationItem.rightBarButtonItem.enabled = NO; 
} else { 
    self.navigationItem.rightBarButtonItem.title = @"my button title"; 
    self.navigationItem.rightBarButtonItem.enabled = YES; 
} 

In questo modo non c'è bisogno di salvare un riferimento al pulsante in una proprietà o preoccuparsi sul cablaggio dell'azione su un nuovo pulsante.

Problemi correlati