O que eu queria fazer era remover o texto do botão 'Voltar' de a UIBarButtonItem
, deixando apenas a divisa azul na barra de navegação. Lembre-se de que estou desenvolvendo para o iOS 7. Tentei vários métodos, incluindo, entre outros:
Este é o método de imagem que eu não gostei (a imagem parecia fora de lugar):
UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;
Outro método que tentei foi este, que simplesmente não funcionou (nada foi exibido):
UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;
O que eu queria alcançar era algo como os botões voltar encontrados no aplicativo iOS 7 Music, que apresentavam apenas uma única divisa.
Obrigado.
ios
uinavigationbar
uibarbuttonitem
uinavigationitem
Pan Ziyue
fonte
fonte
Respostas:
Em seguida, você pode remover o título do item do botão Voltar.
Se você usa o Storyboard, pode definir o botão Voltar do inspetor de atributos de navegação com espaço.
fonte
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
UIControlStateHighlighted
tambémPara definir o título do botão Voltar para um controlador de exibição sem alterar seu título, use:
Objetivo-C:
Rápido:
Para deixar claro, isso é feito no controlador de exibição que você veria se apertasse o botão Voltar. ou seja, em vez de ver '<Configurações', você deseja apenas ver '<'; em seguida, no seu SettingsViewController, você deve colocar isso no seu
init
. Então você não terá nenhum problema do título quando estiver olhando para o próprio controlador de exibição.fonte
Se você estiver usando Storyboards, poderá acessar
Attributes Inspector
o ViewControllerNavigation Item
(clique emNavigation Bar
) e definir aBack Button
propriedade como "" (um caractere de espaço). Isso definirá o título do botão Voltar para um caractere de espaço, deixando a divisa visível. Não há necessidade de mexer com o código.Observe que isso definirá o
Back Button
título do botão Voltar que segue para este View Controller daquele que foi pressionado em cima dele, e não doBack Button
que será exibido dentro deste controlador!fonte
Isso funciona para eu exibir apenas a divisa 'de volta' sem nenhum texto:
Defina essa propriedade no
viewDidLoad
View Controller apresentando a barra de navegação e ele fará o truque.Nota: Eu o testei apenas no iOS 7, que está dentro do escopo da pergunta.
fonte
-viewDidLoad
o VC que não quero o texto Voltar. No entanto, o que descobri mais tarde foi que, quando apago o 2º VC donavigationController
texto do título, aparece logo depois, não imediatamente. Eu acho que um vídeo teria ilustrar isso melhor, então aqui está: ligaçãoAo definir o título do botão, use @ "" em vez de @ "".
--EDITAR--
Alguma coisa muda quando você tenta outras strings? Estou usando o seguinte código com êxito:
backString é uma variável definida como @ "" ou @ "Back", dependendo se eu estiver no iOS 7 ou em uma versão inferior.
Uma coisa a observar é que esse código não está no controlador da página para a qual desejo personalizar o botão Voltar. Na verdade, ele está no controlador antes dele na pilha de navegação.
fonte
setLeftBarButtonItem:backButton
vez disso, nada estaria lá.Às vezes, é útil ver as coisas em contexto. Aqui está um projeto mínimo que oculta o texto "voltar", mas ainda mostra a seta.
Storyboard
Há um show segue do botão "Show Second View Controller" para o segundo controlador de exibição.
Também adicionei um item de navegação ao segundo controlador de exibição para que ele tivesse um título. Isso é opcional. Não afeta o botão Voltar.
Código
FirstViewController.swift
SecondViewController.swift
Método alternativo (apenas IB, sem código)
No storyboard, selecione o item de navegação para o primeiro controlador de exibição (não o segundo). Basta inserir um espaço para o texto do botão Voltar.
fonte
fonte
No iOS7, a Apple introduziu duas novas propriedades no UINavigationBar, 'backIndicatorTransitionMaskImage' e 'backIndicatorImage'.
Simplesmente ligando uma vez:
Ele renderizará uma imagem personalizada em vez do glifo padrão da viga, herdando a cor da tonalidade da keyWindow.
E para remover o título, sugiro a resposta de Kamaros. Lembre-se de chamar esse código no controlador de exibição que está pressionando seu novo controlador de exibição. Removendo o texto do título de um iOS UIBarButtonItem
fonte
Não tive muito sucesso com as respostas fornecidas, mas encontrei uma solução realmente simples. No storyboard, você pode clicar no item de navegação do UIViewController e definir o texto do botão Voltar. Coloquei-o em um único espaço '' e isso me deu o comportamento que estava procurando.
fonte
Isso funcionou para mim no iOS10. Chame isso de viewDidLoad do controlador de exibição.
fonte
A solução simples para esse problema, trabalhando no iOS7 e no 6, é definir a exibição de título personalizada em viewDidLoad:
Em viewWillAppear: você pode chamar com segurança
Como a visualização do título é personalizada, ela não será substituída ao retornar à pilha de navegação.
fonte
[self.navigationItem.backBarButtonItem setTitle:@" "];
viewWillAppear, mas ele não estava funcionando nas visualizações apresentadas depois de descartar uma visualização modal.Na verdade, você pode fazer isso com apenas um truque:
Substitua a
UINavigationBar
classe e adicione esta linha de código:Então inicialize seu
UINavigationController
com esta classe UINavigationBar personalizada ... etc.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];
Espero que isto ajude
fonte
Consegui juntar algo usando a resposta de DonnaLea. É assim que a solução aparece na minha subclasse UIViewController:
O problema com a resposta original é que ele remove o título do controlador quando você volta a ele. A tentativa de redefinir o título em viewWillDisappear é muito tarde no processo de transição; Isso faz com que o título volte novamente ao invés de animar bem. No entanto, o willMoveToParentViewController acontece mais cedo e permite o comportamento correto.
Advertência: Eu só testei isso com um push / pop normal do UINavigationController. Pode haver um comportamento inesperado adicional em outras situações.
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
SWIFT 3
fonte
Nenhuma das respostas me ajudou. Mas um truque funcionou - eu acabei de limpar o título do controlador de exibição que pressionou (para onde o botão voltar) está antes de pressioná-lo.
Portanto, quando a visualização anterior não tiver um título, no iOS 7, o botão Voltar terá apenas uma seta, sem texto.
Na
viewWillAppear
visão de empurrar, coloquei de volta o título original.fonte
Eu estava tendo o mesmo problema e fiz dessa maneira.
--EDITAR--
Essa é uma solução quando você realmente deseja remover o texto do título de todo o UIBarbuttonItem. Se você deseja remover apenas o título do item do botão da barra traseira, não existe uma solução simples e conveniente. No meu caso, como eu tenho apenas alguns UIBarButtonItems que precisam mostrar o texto do título, apenas alterei o titleTextAttributes desses botões específicos. Se você quiser ser mais específico, use o código abaixo, que mudará apenas os botões da barra de navegação:
fonte
UIControlStateHighlighted
bemIsso está usando subclasse
navigationController
remove o "Voltar".Estou usando isso para removê-lo, permanentemente através do aplicativo.
fonte
fonte
Ocultar o botão Voltar Título da barra de navegação
fonte
Aqui está o que estou fazendo, que é mais simples de remover o título do botão Voltar
fonte
Swift 3.1 Você pode fazer isso implementando o método delegado de UINavigationController. Ele ocultará o título apenas com o botão Voltar; ainda obteremos a imagem da seta de retorno e a funcionalidade padrão.
fonte
Você também pode usar isso:
Isso funciona para mim
fonte
fonte
Solução perfeita globalmente
fonte
Crio uma classe personalizada para
UINavigationController
e aplico-a a todos os controladores de navegação no meu aplicativo. Dentro dessaUINavigationController
classe personalizada , defino oUINavigationBar
delegado paraself
quando a exibição for carregada.Então eu implemento o método delegado:
Dessa forma, eu simplesmente atribuo minha classe personalizada a todos os meus controladores de navegação e limpa o título de todos os botões Voltar. E, por questões de clareza, eu sempre defino o título para todos os meus outros controladores de exibição,
viewWillAppear
para que o título seja sempre atualizado imediatamente antes da exibição da exibição (caso seja removida por truques como este).fonte
Basta digitar um único espaço para o item de navegação do botão Voltar!
fonte
Se, como eu, você estiver usando uma exibição personalizada em vez de
UINavigationBar
e estiver com o botão Voltar, precisará fazer um trabalho que pareça um pouco desleixado.Parece que, se não for apresentado, não importa o que tente mostrar um título, isso significa que ele é mostrado e oculto antes de ser desenhado e resolver o problema.
fonte
fonte
Eu criei uma categoria de configuração zero muito simples para ocultar todos os títulos dos botões voltar através do aplicativo. Você pode conferir aqui . Esta pergunta já aceitou resposta, mas para outras pode ser útil.
EDITAR:
arquivo .h
arquivo .m
fonte