Quero remover o texto do botão Voltar, mas quero manter o ícone. eu tentei
let backButton = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backButton
No entanto, isso remove completamente o texto e o ícone.
Eu sei que isso já tem uma resposta, mas você também pode fazê-lo em código (caso esteja trabalhando com pontas)
Adicione o acima no primeiro controlador de visualização.
Observe que você precisa fazer isso para cada controlador de visualização que está empurrando. Portanto, se você tiver 3 controladores de visualização e quiser remover o texto de volta de todos eles, será necessário adicionar a linha nos controladores de visualização 1 e 2.
fonte
.Plain
foi alterado para.plain
. Sem p maiúsculo.Depois de pesquisar muito, encontrei a solução melhor e simples, que afetará todos os viewControllers escritos em Swift 4.2 e também trabalhando em Swift 5
fonte
O texto do botão Voltar depende do título da visualização principal.
O truque é limpar o título se a visualização principal desaparecer e configurá-lo novamente se for mostrado novamente:
fonte
Se você quisesse remover o título de um botão de voltar de um controlador de vista empurrado, digamos que
<Settings
para<
em subSettingsViewController então você tem que definir backBarButtonItem título de SettingsViewController () viewWillDisappear método.Objective-C:
Rápido:
fonte
.Plain
foi alterado para.plain
. Sem p maiúsculo.Se você quiser a seta para trás, coloque o código a seguir no arquivo AppDelegate no método didFinishLaunchingWithOptions.
Para Swift
fonte
No meu caso, para ícone e título personalizados, funcionou (Swift 4)
fonte
Resolvi esse problema adicionando um "" no título do StoryBoard do ViewController anterior. Apenas um espaço, não vazio; D
fonte
Finalmente encontrei a solução perfeita.
Basta adicionar uma imagem transparente e adicionar o código a seguir em seu AppDelegate.
fonte
UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment
hack que a maioria das outras respostas recomendam, mas foi quebrado no iPhone X para controladores de visualização com títulos longos. Esta solução funciona perfeitamente.em rápido 4
fonte
Para Swift 4+ colocar estas linhas no
AppDelegate
nodidFinishLaunchingWithOptions
fonte
Isso está funcionando para mim
fonte
Se você tem um ViewControllerA e deseja navegar para o ViewControllerB, no ViewControllerA, você deve definir o navigationItem atual com um novo UIBarButtonItem e o título para uma string com espaço em branco antes de enviar para outro controlador de visualização:
Defina o título como uma string com um espaço em branco, você não pode definir nil ou "" (string vazia) porque o valor padrão é nil
fonte
Coloque este código em cada VC que empurra outro
fonte
fonte
Para remover todos os controladores de visualização em uma pilha de controladores de navegação:
subclasse UINavigationController e adicione este:
fonte
Às vezes não funciona alterar apenas a cor do título, no caso de o título ser longo. Porque isso pode deslocar o título da barra de navegação para a esquerda. Portanto, para evitar isso, você pode precisar mudar o título do botão da barra horizontalmente, além de torná-lo transparente:
fonte
Para mim, isso funcionou:
Observe que se você definir apenas o título sem modificar o backBarButtonItem, ele parecerá funcionar. Mas se você tentar voltar usando um gesto e cancelar e permanecer no controlador de visualização empurrado, o título de volta voltará.
Trabalhando em Swift 4
fonte
Você deve selecionar a barra de navegação do controlador DE onde o botão Voltar apontará e digite "" no campo Botão Voltar.
por exemplo, se você estiver empurrando o controlador A para o controlador B, coloque um espaço em branco na barra de navegação do controlador A.
fonte
Xcode 10, Swift 4+
Resposta semelhante às outras aqui, mas é importante notar que se o texto ainda não for apagado, você deve clicar em Espaço e depois em Enter.
fonte
Detalhes
Solução
1. Crie uma classe personalizada do UINavigationController
2. Adicionar extensão UIViewController
3. Atualize sua classe ViewController
Amostra completa
Resultado
fonte
Uma alternativa para substituir tudo
ViewControllers
para mim era estenderUINavigationController
e definir obackBarButtonItem
dotopViewController
.Swift 5
no Xcode 11.2.1:fonte
A maneira mais fácil de fazer isso programaticamente é definir a
backBarButtonItem
partir do controlador de visualização pai (um controlador que chama push).Mais detalhes aqui https://sarunw.com/posts/how-to-remove-text-from-uinavigationbar-back-button/
fonte
Você pode remover o texto do botão Voltar usando um método de delegação de
UINavigationController
.fonte
No Xcode 9.2 com Swift, funcionava assim:
fonte
Para o caso em que não temos controle do controlador de visualização anterior (ou seja, se estivermos trabalhando em uma estrutura), podemos excluir o título do botão Voltar como segue:
O que ele faz é navegar até o último item da pilha de navegação e deletar seu título anterior. Certifique-se de salvar o original quando nosso controlador de visualização aparecerá:
e, em seguida, reatribua-o, para não interromper qualquer parte do aplicativo:
fonte
Isso resolverá seu problema:
fonte
Tentei algumas respostas e não consigo fazê-las funcionar em todos os casos. Portanto, esta é uma solução alternativa para não afetar o título da barra de navegação se ela estiver definida.
fonte
A maneira programática fácil, sem efeitos colaterais indesejados, é inicializar o navigationItem.backBarButtonItem com um item vazio no método awakeFromNib do controlador de origem (aquele de onde você está navegando):
Nota: Se você inicializou o botão Voltar mais tarde, como no método viewDidLoad () , você perderia a funcionalidade de deslizar para trás (deslizar da esquerda para a direita leva você um passo para trás na pilha de navegação).
Então, se você quiser textos de botão de voltar diferentes para controladores de destino diferentes e se estiver usando segues, você pode definir o título no método prepare (para segue :, sender :) , como este:
fonte