Como posso ocultar o texto do botão Voltar de um controlador UINavigation? Eu terei apenas o "<" e não "<Voltar"
104
Como posso ocultar o texto do botão Voltar de um controlador UINavigation? Eu terei apenas o "<" e não "<Voltar"
Respostas:
No construtor de interface , você pode selecionar o item de navegação do controlador anterior e alterar a
Back Button
sequência para o que você gostaria que o botão voltar aparecesse. Se quiser em branco, por exemplo, basta colocar um espaço.Você também pode alterá-lo com esta linha de código:
[self.navigationItem.backBarButtonItem setTitle:@"Title here"];
Ou em Swift :
self.navigationItem.backBarButtonItem?.title = ""
fonte
Back Button
já estiver em branco no IB, basta adicionar um espaço para se livrarBack
e apenas mostrar a seta.Você também pode fazer isso por meio do storyboard. No inspetor de atributos do item de navegação do controlador anterior você pode definir "" no campo do botão Voltar. Consulte a imagem abaixo. Substitua "Seu título aqui" por "". Ao fazer isso, você alcançará o resultado desejado. Você não precisa mais mexer com o 'Título'.
Você pode usar de forma programática
[self.navigationItem.backBarButtonItem setTitle:@" "];
onde self se refere ao controlador que aciona o controlador de visualização desejado.
Amostra antes, depois da barra de navegação
Antes
Depois de
fonte
backBarButtonItem
programaticamente não funciona, mas configurá-lo por meio do storyboard, sim.backBarButtonItem
programaticamente para mim no iOS 9.Você pode implementar
UINavigationControllerDelegate
assim:Swift mais velho
Swift 4.x
backBarButtonItem
énil
por padrão e afeta o próximo controlador enviado, então basta configurá-lo para todos os controladoresfonte
Definindo o título do botão Voltar para
@""
ounil
não funcionará. Você precisa definir todo o botão vazio (sem um título ou imagem):Objective-C
Rápido
Isso deve ser feito no controlador de visualização que está no topo de seu controlador de visualização na pilha de navegação (ou seja, de onde você navega para o seu VC via
pushViewController
método)fonte
Outra solução para esse problema para situações em que você tem muitos controladores de visualização é usar um
UIAppearance
proxy para ocultar efetivamente o texto do título do botão Voltar, como este:Essa solução renderizará o texto como um pequeno ponto claro, semelhante a definir manualmente o título do botão Voltar como
@" "
, exceto que afeta todos os botões da barra de navegação.Não sugiro isso como uma solução geral para o problema porque afeta todos os botões da barra de navegação. Ele inverte o paradigma para que você escolha quando mostrar os títulos dos botões, em vez de quando ocultar os títulos.
Para escolher quando mostrar os títulos, restaure manualmente os atributos do texto do título conforme necessário ou crie uma subclasse especializada
UIBarButtonItem
que faça o mesmo (potencialmente com outroUIAppearance
proxy).Se você tem um aplicativo em que a maioria dos títulos dos botões Voltar precisa ser ocultada e apenas alguns (ou nenhum) dos botões de navegação são botões do sistema com títulos, isso pode ser para você!
(Observação: a alteração do tamanho da fonte é necessária, embora a cor do texto seja clara, a fim de garantir que títulos longos não façam com que o título da barra de navegação central se desloque)
fonte
Adicione o seguinte código em viewDidLoad ou loadView
Testei no iPhone e iPad com iOS 9
fonte
Você pode adicionar esta categoria Objective-C para fazer com que todos os botões "Voltar" criados por um controlador de navegação não tenham texto. Acabei de adicioná-lo ao meu arquivo AppDelegate.m.
PS - (Não sei como fazer esta extensão funcionar com Swift, estava tendo erros estranhos. Edições bem-vindas para adicionar uma versão Swift)
fonte
override
isso rapidamente. Pergunta muito interessanteTentei alguns acima e abaixo, mas não funcionaram. Isso funcionou para mim:
fonte
A única coisa que funciona sem efeitos colaterais é criar um botão Voltar personalizado. Contanto que você não forneça uma ação personalizada, até mesmo o gesto de deslizar funciona.
Infelizmente, se você quiser que todos os botões de voltar no não tenham títulos, você precisa configurar este botão de voltar personalizado em todos os seus controladores de visualização: /
É muito importante que você defina um espaço em branco como título e não a string vazia.
fonte
para remover o texto do botão de fundo programaticamente, usado abaixo do Código, isso funcionará no xcode7 e acima.
self.navigationController.navigationBar.topItem.title = @ "";
ou
manualmente em storyboards, selecione a barra de navegação no controlador de visualização e coloque "" no texto do botão Voltar.
isso vai funcionar. obrigado
fonte
self.navigationController?.navigationBar.topItem?.title = " "
no Xcode 9 e funcionou!A resposta atual não estava funcionando. eu queria remover o título inteiramente, mas o texto "voltar" não estava indo embora.
Volte para o controlador de visualização anterior e defina sua propriedade de título:
SÓ funciona quando o View Controller anterior não tem um título
fonte
@""
.Maneira alternativa - use a classe NavigationBar personalizada.
Ou seja, isso remove títulos de todo o projeto. Basta definir a classe personalizada para UINavigationController.
fonte
Defina o Título do VC anterior como string "" com espaço. e o título com o botão Voltar será substituído por uma string de espaço simples.
Em Voltar, pressione novamente para redefinir o título para o original no viewWillAppear.
fonte
Use um costume
NavigationController
que substituipushViewController
fonte
Muitas respostas já, aqui estão meus dois centavos sobre o assunto. Achei essa abordagem realmente robusta. Você só precisa colocar isso em viewController antes de seguir.
Swift 4:
fonte
Tentei de tudo neste post. A única solução de trabalho é @VoidLess's
Aqui está a mesma resposta, mas mais completa
fonte
Esta é minha resolução para iOS11, eu mudo a aparência de UIBarButtonItem em applicationDidFinishLaunchingWithOptions:
Você não pode alterar o deslocamento Y, porque isso mudará a posição do botão da barra traseira também no iOS11, mas está OK no iOS10 e abaixo.
fonte
Em Swift3,
Se você definir uma configuração global
fonte
Swift 3.1 Você pode fazer isso implementando o método delegado de UINavigationController.
fonte
Para aqueles que desejam ocultar o título do botão Voltar globalmente.
Você pode swizzle
viewDidLoad
deUIViewController
como esta.Uso:
fonte
Se você tem como alvo o iOS 13 e posterior, pode usar esta nova API para ocultar o título do botão Voltar globalmente .
fonte
Eu estava lutando com isso porque tinha um controlador de navegação personalizado. Consegui remover o texto do item anterior em todos os controladores de visualização com este código na minha classe de controlador de navegação personalizado
override func viewDidLayoutSubviews() { self.navigationBar.backItem?.title = "" }
Isso remove todos os títulos dos itens anteriores usando este controlador de navegação personalizado.
fonte
No iOS 11, descobrimos que definir
UIBarButtonItem
a fonte / cor do texto da aparência para um valor muito pequeno ou cor clara fará com que outro item da barra desapareça (o sistema não honra mais a classe do item UIBarButton, ele irá convertê-lo para a_UIModernBarButton
). Além disso, definir o deslocamento do texto de volta para fora da tela resultará em flash durante o pop interativo.Então, nós swizzled
addSubView
:fonte
fonte
O texto de volta vem do último View Controller
navigationItem.title
, enavigationItem.title
é definido automaticamente porself.title
. Uma maneira fácil de resolver o problema é o ganchosetTitle:
, certifique-senavigationItem.title = @""
Coloque este código em
AppDelegate.m
fará com que fique ok。Mais detalhes em https://www.jianshu.com/p/071bc50f1475(Simple Chinease)
fonte
Minha solução: - XCode: 10.2.1 - Swift: 5
fonte
XCode 11.5 Swift 5
Uma maneira muito simples - embora talvez um pouco hackeada - de fazer isso programaticamente se você não precisar do botão voltar personalizado é definir o tamanho da fonte igual a zero no controlador de visualização que você está empurrando para a pilha, chamando algo assim de viewDidLoad
fonte
Finalmente encontrei a solução perfeita para ocultar o texto de volta padrão em todo o aplicativo.
Basta adicionar uma imagem transparente e adicionar o código a seguir em seu AppDelegate.
fonte
O método a seguir funciona no iOS 11 e é seguro para não travar em outras versões do iOS. Fazer isso pode fazer com que seu aplicativo seja rejeitado na revisão da App Store, pois UIModernBarButton e UIBackButtonContainerView são APIs privadas. Coloque em AppDelegate.
fonte
Versão Swift, funciona perfeitamente globalmente:
fonte
solution
. Como @limfinity apontou, ele irá alterá-lo universalmente para todos os UIBarButtonItem em todo o aplicativo