Como posso personalizar o botão voltar da navegação no iOS 7 e superior sem título? (ou seja, apenas com a seta)
self.navigationItem.leftBarButtonItem = self.editButtonItem;
Eu só estou querendo saber se eles têm algum self.backButtonItem;
OU
algo assim?
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemBACK
target:self action:@selector(back)];
Respostas:
É realmente muito fácil, aqui está o que eu faço:
Objetivo C
Swift 2
Swift 3
Coloque esta linha no controlador de exibição que está pressionando a pilha ( o controlador de exibição anterior ). O botão Voltar do controlador de exibição pressionado agora mostrará o que você colocou para initWithTitle, que neste caso é uma string vazia.
fonte
prepareForSegue
controlador de exibição e funcionou perfeitamente.Encontrei uma maneira fácil de fazer meu botão voltar com a seta única do iOS.
Vamos supor que você tenha um controlador de navegação indo para o ViewA do ViewB. No IB, selecione a barra de navegação do ViewA, você verá estas opções: Título, Prompt e Botão Voltar.
Opções de barra de navegação
O truque é escolher o título do botão Voltar do controlador de visualização de destino (ViewB) nas opções do controlador de visualização anterior (Visualização A). Se você não preencher a opção "Botão Voltar", o iOS colocará o título "Voltar" automaticamente, com o título do controlador de exibição anterior . Portanto, você precisa preencher esta opção com um único espaço.
Preencha o espaço na opção "Botão Voltar"
O resultado:
fonte
Back Button
definida para um caractere de espaço simples (ou seja, tanto viewa e viewB)Basta usar uma imagem!
OBJ-C :
SWIFT 4 :
Icon-Back.png
[email protected]
[email protected]
fonte
navigationController?.interactivePopGestureRecognizer?.delegate = self
faz o truque para manter o gesto de furto de voltaO iOS7 possui novas regras de interface, portanto, é melhor manter pelo menos a seta para trás quando você pressiona um UIView. É muito fácil alterar o texto "voltar" programaticamente. Basta adicionar este código antes de enviar a visualização (ou prepareForSegue se você estiver usando o StoryBoards):
Isso alterará o texto "Voltar" padrão, mas manterá a seta para trás no estilo iOS7. Você também pode alterar a cor da tonalidade da seta para trás antes de empurrar a visualização:
Espero que isso ajude você!
fonte
Nada do que você precisa fazer. Você pode conseguir o mesmo através do próprio storyboard.
Basta ir ao controlador de navegação raiz e dar um espaço. Lembre-se não do controlador que você queria no botão voltar sem título, mas do controlador de navegação raiz.
fonte
Embora a resposta de Kyle Begeman faça totalmente o truque, é bastante irritante ter esse código em todos os controladores de exibição possíveis. Acabei com uma
UINavigationItem
categoria simples . Cuidado, aqui estão dragões! Desculpe, quero dizer, chiando:fonte
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-1000, -1000) forBarMetrics:UIBarMetricsDefault];
( fonte ) - pode ser um pouco menos elegante, mas swizzling senti como um exageroUINavigationItem
o método próprio, não há herança envolvida. E_cmd
é muito improvável que ele esteja envolvido em um caso. Enfim, é um bom ponto. Então, se você tiver algum desses numerosos ajudantes de swizzling em seu projeto, use-o aqui também.EDIT: 2014-04-09: À medida que ganhei reputação, sinto muito por não usar mais esse truque. Eu recomendo a resposta de Kyle. Também aviso que o
self
deself.navigationItem.backBarButtonItem
não é o controlador de vista o botão Voltar é exibido, mas a vista do controlador anterior para ser voltou.Se você não precisa ter o texto do título para o controlador de exibição anterior, basta preencher o título com uma string em branco;
Isso impedirá a exibição de "retorno" com a chevron no controlador de exibição empurrado.
EDIT: Mesmo que você use texto de título que não esteja em branco, definir o título do controlador de exibição anterior em
viewWillAppear:
obras, exceto que o título pode piscar rapidamente quando o controlador de exibição foi exibido. Eu acho que "o aplicativo do twitter" parece fazer um hack mais sutil para evitar a cintilação.fonte
Isso funciona, mas removerá o título do item anterior, mesmo se você voltar para ele:
Basta definir essa propriedade no
viewDidLoad
View Controller enviado.fonte
viewWillAppear
para que ele esteja sempre definido corretamente.É assim que eu faço e da maneira mais simples, funciona e mais clara para fazê-lo.
Isso funciona se incorporado em
Navigation Controller
Swift 3
Em
viewDidLoad
adiciono isso ao View Controller, você deseja que o botão voltar seja apenas uma seta.A diferença disso para a resposta de @Kyle Begeman é que você chama isso no controlador de exibição que deseja que o botão voltar seja apenas uma seta, não no controlador de exibição de pilha de envio.
fonte
Você não tem acesso ao backButtonItem de navegação da maneira que deseja, precisa criar seu próprio botão Voltar, como abaixo:
E claro:
fonte
Alvo: personalizando o botão voltar tudo
UINavigationBar
para um ícone brancoEtapas: 1. no método "didFinishLaunchingWithOptions" do AppDelete:
2.no
viewDidLoad
método da superclasse comumViewController
:fonte
SWIFT 4
Para aqueles que desejam criar botões de retorno personalizados e remover o título, use o seguinte trecho de código no controlador de exibição que está pressionando o novo:
Para um uso mais universal, faça o seguinte:
Crie uma função universal da seguinte maneira:
Em seguida, use-o nos controladores de exibição da seguinte maneira:
fonte
O hack simples do iOS6 também funciona no iOS7:
Edit: Não use esse hack. Veja o comentário para obter detalhes.
fonte
Você pode usar isso. Isso funciona perfeitamente para mim, basta adicionar um
UIButton
como uma exibição de custum para oUIBarButtonItem
.Experimente o código abaixo
fonte
Crie um
UILabel
com o título desejado para o seu controlador de visualização raiz e atribua-o ao controlador de visualizaçãonavigationItem.titleView
.Agora defina o título como uma string vazia e o próximo controlador de exibição que você pressionar terá um botão voltar sem texto.
fonte
fonte
Todas as respostas não resolvem o problema. Não é aceitável definir o título do botão de retorno em todos os controladores de exibição e adicionar deslocamento ao título ainda faz o próximo título do controlador de exibição mudar para a direita.
Aqui está o método usando o método swizzling, basta criar uma nova extensão para UINavigationItem
fonte
Eu apliquei o seguinte código no viewDidLoad e funciona:
Só para atualizar eu uso o Vector Icon
fonte
Você pode subclassificar UINavigationController, definir-se como delegado e definir backBarButtonItem no método delegate
navigationController:willShowViewController:animated:
fonte
Retornar título vazio
Alterar imagem anterior
fonte
Uso essa solução desde o iOS 5 ou mais, sem problemas. Eu criei uma função utilitária que chamo nos controladores de exibição. Você precisa fazer isso no viewDidLoad ou em qualquer outro ponto depois disso.
Em alguns casos, o item de navegação já pode existir; em outros, ele precisa ser criado. Isso é responsável pelos dois casos sem mexer no título do item de navegação. Ele permite que você remova o título simplesmente passando
@""
.fonte
A única maneira que funcionou para mim foi:
ATUALIZAR:
Quando mudei o sinalizador de animação segue para true (era falso antes), a única maneira que funcionava para mim era:
fonte
Se você possui dois ViewController (FirstVC, SecondVC) incorporados no Navigation Controller e deseja que haja apenas uma seta para trás no SecondVC.
Você pode tentar isso No ViewDidLoad do FirstVC
Então, quando você entrar no SecondVC, verá a única seta para trás
fonte
Se você definir a tintColor Of NavigationBar, adicione uma imagem personalizada do botão voltar sem título, para que a cor da tonalidade reflita a cor da imagem. Por favor, siga este link de documentação da apple.
https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/index.html#//apple_ref/doc/uid/TP40012857-UIView-SW7
fonte
Verifique esta resposta
Como alterar o nome do botão Voltar do UINavigationController?
defina o
title
texto comostring
com um espaço em branco como abaixoNão tem reputação suficiente para adicionar comentários :)
fonte
Escrevi uma extensão para facilitar isso:
fonte
Você pode alterar o título para @ "" do ViewController atual em viewWillDisappear e, quando estiver prestes a aparecer novamente, redefina o título para o que estava antes.
fonte
No método prepareForSegue: do seu primeiro ViewController, você define esse título para @ ""; portanto, quando a próxima exibição for pressionada, ele exibirá o título anterior do ViewController, que será @ "".
O único problema com isso é que, quando você pressiona o botão voltar, sua visualização anterior não possui título, portanto, você pode adicioná-lo novamente em viewWillAppear:
Não gosto muito desta solução, mas funciona e não encontrei outra maneira de fazê-lo.
fonte
Para adicionar à resposta de Thomas C acima, às vezes colocar um único espaço não funciona e você deve continuar adicionando espaços.
Você saberá que obteve sucesso quando vir "Item do botão de barra -" sob o "Item de navegação". Está no Esboço do Documento (Editor-> Mostrar Esboço do Documento). Depois de ver a imagem acima, você pode excluir alguns espaços e ver se ela ainda funciona.
fonte
Assim como Kyle Begeman, você adiciona o código acima no seu controlador de visualização raiz. Todo o sub-controlador de visão será aplicado. Além disso, adicionando isso no método initWithCoder:, você pode aplicar o estilo para controladores de exibição raiz nas abordagens baseadas em xib, storyboard ou código.
fonte