9

Quando si imposta il pulsante della barra di navigazione destra su disattivato, non cambia il suo colore per segnalare all'utente lo stato disabilitato.Disattivazione di un pulsante della barra di navigazione Elemento

Rimane "evidenziato", non disattivato.

mi hanno istituito il pulsante Storyboard come segue:

enter image description here

self.navigationController.navigationItem.rightBarButtonItem.enabled = NO; 

Che cosa devo fare per cambiare lo stato button`s anche visivamente?

Grazie!

+1

È un pulsante personalizzato? L'impostazione abilitata per FALSE dovrebbe attenuare un normale UIBarButtonItem – ChrisH

+0

@ChrisH, ho aggiornato la mia domanda. – AlexR

+0

Cosa succede se si aggiunge il pulsante Fine, invece, programmato? – ChrisH

risposta

0

Si può cercare di modificare manualmente il colore della tinta in questo modo:

self.navigationItem.rightBarButtonItem.tintColor = [UIColor grayColor]; 

Si tratta di codice non testato, ma dovrebbe funzionare. Inoltre, non dimenticare di cambiarlo quando è di nuovo abilitato.

+0

Dovrebbe essere '[UIColor grayColor]' –

4

Credito a Vijay-Apple-Dev.blogspo per questa risposta.

self.navigationItem.leftBarButtonItem.enabled = NO; 
self.navigationItem.rightBarButtonItem.enabled = NO; 

Questo automaticamente sembra disattivare i pulsanti e li disabilita.

NOTA: L'assunzione nella domanda che self.navigationController.navigationItem.rightBarButtonItem.enabled = NO; i lavori sembrano sbagliati, dopo averlo provato nel mio codice ho scoperto che non aveva alcun effetto.

Grazie ancora a Vijay notare che potrebbe essere meglio usare:

self.navigationItem.hidesBackButton = YES; 

Poiché Apple non piace disabilitando il tasto posteriore.

Personalmente ho intenzione di disabilitare il pulsante in alto a destra e nascondere il pulsante Indietro per impedire all'utente di premerli, quindi riattivarli di nuovo quando scelgo.

Un link alla domanda è here

Questa risposta è pubblicato per la completezza e gli utenti in modo da futuri non hanno bisogno di continuare a cercare oltre questa pagina.

1

provare qualcosa di simile:

[[self.navigationItem.rightBarButtonItems objectAtIndex:0] setEnabled:NO]; 
5

Nessuna delle relative risposte erano in grado di produrre il risultato che cercavo -, ma sono stato in grado di risolvere questo impostando gli attributi di testo sul mio pulsanti di navigazione:

[navButton setTitleTextAttributes:@{NSForegroundColorAttributeName:enabledColor} forState:UIControlStateNormal]; 
[navButton setTitleTextAttributes:@{NSForegroundColorAttributeName:disabledColor} forState:UIControlStateDisabled]; 

Poi, tutto quello che devo fare è il seguente ed l'interactability utente e cambiamenti di colore automatico:

navButton.enabled = YES; // or NO 
+0

Mi piace il fatto che mi sono imbattuto in questo problema un mese dopo aver postato una soluzione e la mia soluzione ha risposto alla mia domanda. – Mike

0

Aggiornamento a:

self.navigationItem.leftBarButtonItem?.isEnabled = true 
Problemi correlati