Ho aggiunto un controllo di navigazione per passare da una vista all'altra nella mia app. Ma alcune delle viste non dovrebbero avere il pulsante 'Indietro' (il titolo precedente). Qualche idea su come nascondere il pulsante Indietro?Come nascondere il pulsante "Indietro" sulla barra di navigazione su iPhone?
risposta
Objective-C:
self.navigationItem.hidesBackButton = YES;
Swift:
navigationItem.hidesBackButton = true
Usa il codice:
self.navigationItem.backBarButtonItem=nil;
Il modo migliore è quello di combinare questi, ti nascondere il pulsante Indietro anche se lo hai impostato manualmente:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
Per rispondere all'utente716216, l'ha spiegato nella sua spiegazione a una frase. La seconda riga di codice è ciò che funziona per il caso predefinito. La prima riga di codice funziona se hai creato e aggiunto il pulsante tu stesso. –
Grazie. ha funzionato!! –
nascondere di nuovo il tasto con il codice di muggito ...
[self.navigationItem setHidesBackButton:YES animated:YES];
o
[self.navigationItem setHidesBackButton:YES];
Inoltre se avete personalizzato UINavigationBar
quindi provare codice muggito
self.navigationItem.leftBarButtonItem = nil;
Questo è il modo per farlo 'dinamicamente' o 'su richiesta'. – Linasses
in qualsiasi classe quando hai usato quel codice, quindi sul pulsante indietro della barra di navigazione di quella classe si nasconderà ... –
Nella funzione viewDidLoad di UIViewController usa il codice:
self.navigationItem.hidesBackButton = YES;
In Swift:
Aggiungere questo al regolatore
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
Non dimenticate che è necessario chiamare sul oggetto che ha il controller di navigazione. Ad esempio, se si dispone di controller nav premendo su un controller della barra delle linguette con un RootViewController, chiamare self.navigationItem.hidesBackButton = YES
sul RootViewController non farà nulla. Si avrebbe in realtà dovuto chiamare self.tabBarController.navigationItem.hidesBackButton = YES
aggiungere questo codice nella visualizzazione del controller
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
Non dimenticare che abbiamo la slitta per eseguire il gesto ora. Probabilmente vuoi rimuovere anche questo. Non dimenticare di riattivarlo nuovamente se necessario.
if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
self.navigationItem.hidesBackButton = YES;
}
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
Per me nessuna delle precedenti sembrava funzionare, non ha avuto alcun effetto visivo. Sto usando gli storyboard con una vista "incorporata" in un controller di navigazione.
Quindi al livello di codice aggiungi i miei menuItem e per qualche motivo il "backButton" è visibile quando eseguo il debugging visivo della gerarchia della vista e l'icona menuItem viene visualizzata sotto il "pulsante indietro" invisibile.
Ho provato le impostazioni, come suggerito dai vari metodi di aggancio e che non hanno avuto alcun effetto. Poi ho provato un approccio più brutale e ho iterato sulla sottoview che non ha avuto alcun effetto.
Ho controllato le dimensioni delle mie icone e sembravano essere ok. Dopo essersi riferito alla linea guida Human Interface di Apple, ho confermato che le mie icone sono corrette. (1 pixel più piccolo nel mio caso 24px 48px 72px).
La parte più strana è allora la correzione reale ...
Quando si aggiunge la voce di BarButton dare un titolo con almeno un carattere, Nel mio caso un carattere di spazio.
Si spera che questo aiuti qualcuno.
//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX
style:UIBarButtonItemStylePlain
target:self
action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];
[self.navigationItem setLeftBarButtonItem:leftButtonItem];
Non stava lavorando per me in tutti i casi in cui ho impostato
self.navigationItem.hidesBackButton = YES;
in viewWillAppear o ViewDidLoad, ma ha funzionato perfettamente quando l'ho impostato in init del viewController.
@ user8170 come nascondere il barbuttonitem sinistro sulla barra di navigazione ..? – rockey
@vakio che in realtà non funziona;) –
non puoi nascondere il pulsante indietro di 'self.navigationItem.leftBarButtonItem = nil;'. Se hai impostato esplicitamente leftbarbuttonitem puoi usare 'self.navigationItem.leftBarButtonItem = nil;'. 'self.navigationItem.hidesBackButton = YES;' nasconderà il pulsante Indietro Articolo – rakeshNS