Chame programaticamente o botão Voltar do controlador de navegação no iOS


85

Em um aplicativo para iPhone baseado em UINavigationController, em um método, eu gostaria de realizar o equivalente programático de pressionar o botão Voltar e voltar uma visualização.

ou seja, pressione automaticamente o botão Trabalhos como visto aqui:

Imagem do controlador de navegação

Posso fazer uma chamada genérica do iOS ou são necessárias mais informações?

Respostas:


189

UINavigationControllerO -popViewControllerAnimated:método de deve fazer o que você quiser:

[navigationController popViewControllerAnimated:YES];

12
incrível, graças a Steve e Niels. A solução que usei foi [self.navigationController popViewControllerAnimated: YES]; fácil;)
oberbaum

isso funciona muito bem, exceto os controladores de visualização adicionados ao uitabbar. alguma pista ??
virata

1
Eu adicionei, [self.navigationController popViewControllerAnimated:YES];mas não faz nada, no entanto, há um alerta ao gravar esse botão que está funcionando.
mohsin.mr

Hmm, recebo uma tela em branco, um aplicativo que não responde e o seguinte no console: "Concluindo uma transição de navegação em um estado inesperado. A árvore de subvisualização da barra de navegação pode ser corrompida."
Kurt

24

Assumindo que você não deseja PRESSIONAR o botão programaticamente, mas simplesmente copiar o resultado de pressionar o botão, você deve dizer ao controlador de navegação para abrir o controlador de visualização atual.

[self.navigationController popViewControllerAnimated:YES];

Isso o removerá da pilha e o levará de volta ao controlador de visualização anterior.


21

Swift 3.0

Voltar para a visão raiz

self.navigationController?.popToRootViewController(animated: true)

Voltar para a vista anterior

self.navigationController?.popViewController(animated: true)

Swift 2.3

Voltar para a visão raiz

self.navigationController?.popToRootViewControllerAnimated(true)

Voltar para a vista anterior

self.navigationController?.popViewControllerAnimated(true)

7

Você deveria ligar

popViewControllerAnimated:

que é o oposto de adicionar controladores de visualização com pushViewController:animated:


6
[self.navigationController popViewControllerAnimates:YES];

é a melhor opção, mas se você não estiver na mesma classe do controlador de visualização ou se o seu delegado mudar antes de o método do botão Voltar ser chamado, você também pode tentar -

primeiro você deve definir o botão Voltar ---

UIBarButtonItem *newBackButton = [[UIBarButtonItem alloc] initWithTitle: @"anyTitleForBackButton" style: UIBarButtonItemStyleBordered target: nil action: @selector(backButtonTapped)];

[[self navigationItem] setBackBarButtonItem: newBackButton];

[newBackButton release];

e então no método backButtonTapped você pode chamar -

[self.navigationController pushViewController:desiredViewController animated:YES];
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.