Swift - Come nascondere il pulsante Indietro nell'elemento di navigazione?


103

In questo momento ho due controller di visualizzazione. Il mio problema è che non so come nascondere il pulsante Indietro dopo il passaggio al secondo controller di visualizzazione. La maggior parte dei riferimenti che ho trovato sono in Objective-C. Come lo codifico in Swift?

Nascondi il codice del pulsante Indietro in Objective-C

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

Risposte:


366

Secondo la documentazione per UINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true);

30
lo snarkiness è gratuito.
Greg

58
Potrebbe spaventare voi @ Paulw11, ma il semplice fatto sta scrivendo "pulsante Swift nascondere di nuovo" in Google e venire qui - come ho appena fatto - è tonnellate più veloce di arare attraverso le risme di testo nella documentazione ufficiale.
La mamma di Joseph Beuys il

4
Considerando che il nome del pulsante indietro è definito nel primo controller di visualizzazione, può essere interessante notare che il codice per nasconderlo deve essere implementato nel secondo controller di visualizzazione (quello che mostra il pulsante).
XLE_22

38

Nel caso in cui utilizzi un UITabBarController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.hidesBackButton = true
}

Lo stesso per me, però vorrei capire il motivo. Qualcuno sa qual è la differenza tra la risposta accettata e questo approccio? L'unica cosa a cui riesco a pensare è il modello di ereditarietà rispetto a una versione statica della barra di navigazione.
Helmut Granda

1
@HelmutGranda Se noti che Bruno utilizza un controller della barra delle schede, questa è la differenza. Nel caso delle risposte accettate, il VC è probabilmente incorporato in un controller di navigazione.
cloudcal

@cloudcal Non sto usando una tabBar, ma entrambe le risposte hanno funzionato. Entrambi hanno nascosto il pulsante Indietro. Pensavo che si sarebbero comportati in modo diverso se il viewController fosse sullo schermo e quindi volevo nascondere il pulsante Indietro. Ancora una volta entrambi hanno agito allo stesso modo. Non sono riuscito a trovare alcuna differenza tra loro. Sto dicendo che la risposta di Bruno non è corretta. Piuttosto per puro navigationController non fa differenza. Non ho provato tabBarController
Honey

20

Swift

// remove left buttons (in case you added some)
 self.navigationItem.leftBarButtonItems = []
// hide the default back buttons
 self.navigationItem.hidesBackButton = true

È chiaro che navigationItem.hidesBackButton = true è la risposta giusta. Se ci sono pulsanti di sinistra, che può essere il caso, allora questa è sicuramente la risposta giusta e dovrebbe essere considerata la risposta più completa.
truedat101

self.navigationItem.hidesBackButton = trueFunziona come previsto.
Shahabuddin Vansiwala

9

Questo si trova anche nella documentazione della classe UINavigationController:

navigationItem.hidesBackButton = true


1

Puoi provare con il codice seguente

override func viewDidAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}

Questa non è una risposta a questa domanda.
Boris Nikolic il

0

Ecco una versione della risposta in

Swift 5

che puoi usarlo dallo storyboard:

// MARK: - Hiding Back Button

extension UINavigationItem {

    /// A Boolean value that determines whether the back button is hidden.
    ///
    /// When set to `true`, the back button is hidden when this navigation item
    /// is the top item. This is true regardless of the value in the
    /// `leftItemsSupplementBackButton` property. When set to `false`, the back button
    /// is shown if it is still present. (It can be replaced by values in either
    /// the `leftBarButtonItem` or `leftBarButtonItems` properties.) The default value is `false`.
    @IBInspectable var hideBackButton: Bool {
        get { hidesBackButton }
        set { hidesBackButton = newValue }
    }
}

Ogni elemento di navigazione di un controller di visualizzazione avrà questa nuova proprietà nella sezione superiore dell'ispettore degli attributi


0

Questo ha funzionato per me in Swift 5 come un fascino, aggiungilo alla tua vistaDidLoad ()

self.navigationItem.setHidesBackButton(true, animated: true)

-4

inserisci qui la descrizione dell'immagine

Vai a Impostazioni attributi e deseleziona Mostra barra di navigazione per nascondere il pulsante Indietro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.