Swift - Como ocultar o botão Voltar no item de navegação?


103

No momento, tenho dois controladores de visualização. Meu problema é que não sei como ocultar o botão Voltar após a transição para o segundo controlador de visualização. A maioria das referências que encontrei estão em Objective-C. Como faço para codificá-lo em Swift?

Ocultar código do botão Voltar em Objective-C

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

Respostas:


366

De acordo com a documentação para UINavigationItem:

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

30
o sarcasmo é grátis.
Greg

58
Pode assustar @ Paulw11, mas o simples fato é digitando "botão hide volta Swift" no Google e vir aqui - como eu fiz - é toneladas mais rápido do que arar através das resmas de texto na documentação oficial.
Mãe de Joseph Beuys

4
Considerando que o nome do botão Voltar é definido no primeiro controlador de visualização, pode ser interessante notar que o código para ocultá-lo deve ser implementado no segundo controlador de visualização (aquele que mostra o botão).
XLE_22 de

38

Caso você esteja usando um UITabBarController:

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

O mesmo para mim, porém gostaria de entender o porquê. Alguém sabe qual é a diferença entre a resposta aceita e esta abordagem? A única coisa que consigo pensar é no modelo de herança versus uma versão estática da barra de navegação.
Helmut Granda

1
@HelmutGranda Se você notar que Bruno está usando um Tab Bar Controller, essa é a diferença. No caso de respostas aceitas, o VC provavelmente está embutido em um controlador de navegação.
cloudcal

@cloudcal Não estou usando um tabBar, mas as duas respostas funcionaram. Ambos esconderam o botão de voltar. Achei que eles se comportariam de maneira diferente se o viewController estivesse na tela e então quisesse ocultar o botão Voltar. Mais uma vez, ambos agiram da mesma forma. Não consegui encontrar nenhuma diferença entre eles. Estou dizendo que a resposta de Bruno está incorreta. Em vez disso, para o NavigationController puro, isso não faz diferença. Eu não tentei tabBarController
Honey

20

Rápido

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

É claro que navigationItem.hidesBackButton = true é a resposta certa. Se houver botões à esquerda, o que pode ser o caso, então esta é definitivamente a resposta certa e deve ser considerada a resposta mais completa.
truedat101

self.navigationItem.hidesBackButton = trueEstá funcionando conforme o esperado.
Shahabuddin Vansiwala

9

Isso também é encontrado na documentação da classe UINavigationController:

navigationItem.hidesBackButton = true


1

Você pode tentar com o código abaixo

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

Esta não é uma resposta a esta pergunta.
Boris Nikolic

0

Aqui está uma versão da resposta em

Swift 5

que você pode usar a partir do 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 }
    }
}

Cada item de navegação de um controlador de visão terá esta nova propriedade na seção superior do inspetor de atributos


0

Isso funcionou para mim no Swift 5 como um encanto, basta adicioná-lo ao seu viewDidLoad ()

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

-4

insira a descrição da imagem aqui

Vá para o inspetor de atributos e desmarque a opção Mostrar Barra de Navegação para ocultar o botão Voltar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.