Como alterar o texto em um botão Voltar

Por padrão, o botão Voltar usa como texto um título de um viewcontroller. Posso alterar o texto no botão Voltar sem alterar o título de um controlador de exibição? Eu preciso disso porque eu tenho um controlador de visualização que título é muito longo para exibir e neste caso eu gostaria de exibir apenas “Voltar” como uma legenda para o botão de volta.

Eu tentei o seguinte que não funcionou:

self.navigationItem.leftBarButtonItem.title = @"Back"; 

Obrigado.

Experimentar

 self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 

Eu encontrei isso olhando os documentos backBarButtonItem nos documentos da Apple para o UINavigationItem .

A abordagem de Marc W funcionou muito bem, uma vez que descobri para qual controlador aplicá-lo: o que está sendo re-intitulado, não o que está no topo. Então, se esta é a pilha de navegação:

 (bottom) ControllerA -> ControllerB (top) 

… e você quer dar um título mais curto para ControllerA no botão de retorno exibido quando o ControllerB está no topo , você aplica a alteração de propriedade ao ControllerA .

Portanto, é mais no contexto de self.title , não como os outros setters de botões de barra esquerda / direita.

Você pode fazer isso no storyboard. Encontre o controlador de visualização para o qual deseja voltar (aquele com o título longo), selecione seu Item de Navegação e abra o Inspetor de Atributos (Alt + Cmd + 4), insira o título personalizado do Botão Voltar.

insira a descrição da imagem aqui

Obrigado Marco … que me ajudou …

Aqui está o que eu fiz.

Se você estiver usando um tableView para navegar para diferentes visões … coloque o código:

 self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 

Em seu método didSelectRowAtIndexPath … do primeiro Controller … Controller A.

Quando você navega para o Controlador B, o botão terá o título “Voltar”.

O botão de retorno puxa seu texto do título do controlador de exibição pai.

No controlador de exibição pai (o controlador de exibição que aparece quando você toca no botão Voltar), defina seu próprio título como o texto desejado no botão Voltar.

Por exemplo, digamos que temos uma class RootViewController . Quando clicamos em uma célula em sua visualização de tabela, SecondViewController uma instância do SecondViewController . Queremos que o botão Voltar da instância do SecondViewController seja “Home”.

no método viewDidLoad de RootViewController.m :

 self.title = @"Home"; 

no método viewDidLoad de SecondViewController.m :

 UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; self.navigationItem.backBarButtonItem = backButton; [backButton release]; 

Se você quiser que o seu botão de voltar para ler, “Voltar”, defina o título do controlador de exibição pai para @"Back" ;

Isso funciona melhor para mim. Experimentar :

  self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; 

Se você estiver usando o storyboard:

  1. Abra o StoryBoard
  2. Na janela Document Outline, localize ViewController para o qual você deseja retornar
  3. Clique no item de navegação desse ViewController
  4. Em Attributes explorer, altere o valor do botão Voltar para seu bloco personalizado

É isso, aproveite …

E no MonoTouch os seguintes trabalhos (em ViewDidLoad do controlador pai):

 NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null); 
 [self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]]; 

Isso funcionou para mim.

No seu controlador de visualização principal, defina o botão de retorno quando a visualização for carregada:

 - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"title" style:UIBarButtonItemStylePlain target:nil action:nil]; } 

Observe que não precisamos include autorelease no final com a versão mais recente do iOS.

Espero que isto ajude!

[self.navigationController.navigationBar.backItem setTitle:@"back"];

Funciona para mim. Você pode replace “voltar” com outra coisa.

Este trabalhou para mim se você não quer ter um título!

 self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil]; 
 self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; 

Eu finalmente sabia por que essas respostas não funcionaram para mim no começo. Eu defino o título no storyboard. Quando eu defino o título no código. funciona!

 self.navigationItem.title = @"Main Menu"; UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil]; [[self navigationItem] setBackBarButtonItem:backButton]; 

Minha solução foi definir o título quando o controlador de visualização é enviado para a pilha de navegação e redefini-lo usando o método delegate antes de o push vc fechar:

Então eu coloquei a mudança de título chamando controlador de visão quando eu empurrar o outro controlador de exibição como:

 self.pushedVC = [self.storyboard instantiateViewControllerWithIdentifier:@"pushedVCIdentifier"]; self.pushedVC.delegate = self; [self.navigationController pushViewController:self.pushedVC animated:YES]; self.title = @"Back"; 

e na function de retorno de chamada delegada (que eu invoco em viewWillDissapear):

 -(void)pushedVCWillClose:(PushedVC *)sender { self.title = @"Previous Title"; } 

Se você quiser não apenas alterar o texto do botão Voltar e permanecer na forma original da seta para a esquerda, mas também fazer algo quando o usuário clicar no botão Voltar, recomendo que você dê uma olhada no meu ” CustomNavigationController “.

// Você pode conseguir isso configurando o título no controlador de visualização anterior como mostrado abaixo

 override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) //Set Title for this view self.navigationItem.title = "My Title" } override func viewWillDisappear(animated: Bool) { super.viewWillAppear(animated) //Set Title for back button in next view self.navigationItem.title = "Back" } 

Para alterar o título do botão Voltar, consulte o código abaixo

 InformationVC *infoController=[[InformationVC alloc]init];[self.navigationController infoController animated:YES]; //Below code changed back button title on InformationVC page. UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Information" style: UIBarButtonItemStylePlain target: nil action: nil]; self.navigationItem.backBarButtonItem = backBarButton;`enter code here` 

Isso funcionou para mim:

 self.navigationController.navigationBar.topItem.title = "Back"