Swift - ¿Cómo ocultar el botón de retroceso en el elemento de navegación?

103

Ahora mismo tengo dos controladores de vista. Mi problema es que no sé cómo ocultar el botón de retroceso después de pasar al segundo controlador de vista. La mayoría de las referencias que encontré están en Objective-C. ¿Cómo lo codifico en Swift?

Ocultar el código del botón de retroceso en Objective-C

[self.navigationItem setHidesBackButton:YES animated:YES];
Mohammad Nurdin
fuente

Respuestas:

366

Según la documentación para UINavigationItem:

self.navigationItem.setHidesBackButton(true, animated: true);
Paulw11
fuente
30
la sarcasmo es gratis.
Greg
58
Puede que te asuste @ Paulw11, pero el simple hecho es escribir "Botón de ocultar rápido" en Google y venir aquí, como acabo de hacer, es muchísimo más rápido que revisar la gran cantidad de texto en la documentación oficial.
Mamá de Joseph Beuys
4
Mientras que el nombre del botón de retroceso se define en el primer controlador de vista, puede ser interesante notar que el código para ocultarlo debe implementarse en el segundo controlador de vista (el que muestra el botón).
XLE_22
37

En caso de que esté usando un UITabBarController:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.tabBarController?.navigationItem.hidesBackButton = true
}
Bruno Cunha
fuente
Lo mismo para mí, sin embargo, me gustaría entender por qué. ¿Alguien sabe cuál es la diferencia entre la respuesta aceptada y este enfoque? Lo único que se me ocurre es el modelo de herencia frente a una versión estática de la barra de navegación.
Helmut Granda
1
@HelmutGranda Si nota que Bruno está usando un controlador de barra de pestañas, esa es la diferencia. En el caso de las respuestas aceptadas, es probable que el VC esté integrado en un controlador de navegación.
cloudcal
@cloudcal No estoy usando una tabBar, pero ambas respuestas funcionaron. Ambos escondieron el botón de retroceso. Pensé que se comportarían de manera diferente si el viewController estuviera en la pantalla y luego quería ocultar el botón de retroceso. Una vez más, ambos actuaron igual. No pude encontrar ninguna diferencia entre ellos. Estoy diciendo que la respuesta de Bruno es incorrecta. Más bien para navigationController puro, no hace la diferencia. No he probado tabBarController
Cariño
20

Rápido

// remove left buttons (in case you added some)
 self.navigationItem.leftBarButtonItems = []
// hide the default back buttons
 self.navigationItem.hidesBackButton = true
Marwen Doukh
fuente
Está claro que navigationItem.hidesBackButton = true es la respuesta correcta. Si hay botones a la izquierda, que puede ser el caso, esta es definitivamente la respuesta correcta y debe considerarse la respuesta más completa.
truedat101
self.navigationItem.hidesBackButton = trueFunciona como se esperaba.
Shahabuddin Vansiwala
9

Esto también se encuentra en la documentación de la clase UINavigationController:

navigationItem.hidesBackButton = true
Amiru Homushi
fuente
6

Ponlo en el viewDidLoadmétodo

navigationItem.hidesBackButton = true 
Harjeet Singh
fuente
1

Puede probar con el siguiente código

override func viewDidAppear(_ animated: Bool) {
    self.navigationController?.isNavigationBarHidden = true
}
Dilip Jangid
fuente
Esta no es una respuesta a esta pregunta.
Boris Nikolic hace
0

Aquí hay una versión de la respuesta en

Rápido 5

que puedes usarlo desde el guión gráfico:

// 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 }
    }
}

Cada elemento de navegación de un controlador de vista tendrá esta nueva propiedad en la sección superior del inspector de atributos

Stoyan
fuente
0

Eso funcionó para mí en Swift 5 como un encanto, solo agréguelo a su viewDidLoad ()

self.navigationItem.setHidesBackButton(true, animated: true)
Matan
fuente
-4

ingrese la descripción de la imagen aquí

Vaya al inspector de atributos y desmarque Mostrar barra de navegación para ocultar el botón Atrás.

neeraj sachdeva
fuente