Domanda

Ho aggiunto un controllo di navigazione per passare da una vista all'altra della mia app. Ma alcune delle visualizzazioni non dovrebbero avere il pulsante 'Indietro' (il titolo precedente). Qualche idea su come nascondere il pulsante Indietro?

È stato utile?

Soluzione

Objective-C:
     self.navigationItem.hidesBackButton = YES;

Swift:
     navigationItem.hidesBackButton = true

Altri suggerimenti

Il modo migliore è combinarli, in modo da nascondere il pulsante Indietro anche se lo si imposta manualmente:

self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;

nascondi pulsante indietro con codice qui sotto ...

[self.navigationItem setHidesBackButton:YES animated:YES];

o

[self.navigationItem setHidesBackButton:YES];

Inoltre, se hai UINavigationBar personalizzato, prova il seguente codice

self.navigationItem.leftBarButtonItem = nil;

Usa il codice:

 self.navigationItem.backBarButtonItem=nil;

In Swift :

Aggiungi questo al controller

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.setHidesBackButton(true, animated: false)
}

Nella funzione viewDidLoad di UIViewController usa il codice:

self.navigationItem.hidesBackButton = YES;

Non dimenticare che è necessario chiamarlo sull'oggetto che ha il controller di navigazione. Ad esempio, se hai un controller di navigazione che preme su un controller della barra delle schede con un RootViewController, la chiamata self.navigationItem.hidesBackButton = YES su RootViewController non farà nulla. Dovresti effettivamente chiamare self.tabBarController.navigationItem.hidesBackButton = YES

Non dimenticare che ora abbiamo la diapositiva per fare un gesto indietro. 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;
}

Aggiungi questo codice nel tuo controller di visualizzazione

UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;

Per me nessuna delle precedenti sembrava funzionare, senza effetti visivi. Sto usando gli storyboard con una vista che è "incorporata" in un controller di navigazione.

Quindi a livello di codice aggiungo il mio menuItems e per qualche ragione il "backButton" è visibile quando si esegue il debug visivo della gerarchia di visualizzazione e l'icona MenuItem viene visualizzata sotto il pulsante "indietro" invisibile ".

Ho provato le impostazioni, come suggerito dai vari metodi di hook e questo non ha avuto effetto. Poi ho provato un approccio più brutale e ho ripetuto la sottoview che non ha avuto alcun effetto.

Ho controllato le dimensioni delle mie icone e mi è sembrato giusto. Dopo aver fatto riferimento alle linee guida dell'interfaccia umana di Apple, ho confermato che le mie icone sono corrette. (1 pixel più piccolo nel mio caso 24px 48px 72px).

La parte più strana è quindi la soluzione effettiva ...

Quando aggiungi l'elemento BarButton assegnagli un titolo con almeno un carattere , nel mio caso un carattere spazio.

Spero 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 ho funzionato per me in tutti i casi quando ho impostato

self.navigationItem.hidesBackButton = YES;

in viewWillAppear o ViewDidLoad, ma ha funzionato perfettamente quando l'ho impostato in init di viewController.

prova questo - self.navigationController? .navigationItem.hidesBackButton = true

In c # o Xamarin.ios, this.NavigationItem.HidesBackButton = true;

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top