comportamento estranho ao mudar o título de backitem do UinavigationController
-
27-09-2019 - |
Pergunta
Estou alterando o título do item do botão traseiro no ViewDidappear de um controlador da seguinte maneira:
self.navigationController.navigationbar.backitem.title = @"anterior";
Ele muda o tittle adequadamente, mas estou tendo um comportamento estranho. Quando seleciono o botão "anterior", ele altera o título do controlador que está na pilha (ou seja, o controlador pai agora tem o título "anterior".
Você agora por que isso aconteceu?
Solução
Quando você está usando um controlador de navegação, chamando [auto -estabelecimento:@"title"]; Dentro de qualquer controlador de exibição na pilha, definirá o título da barra de navegação. Este também é o título usado por padrão para o botão de volta quando você pressionou um novo controlador de exibição. Aparentemente, pelo que você está experimentando, definindo explicitamente o título do backitem, também o define para o título da barra de navegação para o controlador de exibição anterior, substituindo o que especificado na chamada para -settitle no controlador de exibição.
Você provavelmente estará melhor gerenciando o título de dentro dos controladores de exibição em sua pilha de navegação. Quando você for pressionar um novo controlador de exibição, faça isso:
[self setTitle:@"Previous"];
NextViewController *controller = [[NextViewController alloc] init];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil;
Agora, quando o próximo controlador de exibição exibe, o botão de volta com "anterior". Agora, você só precisa alterá -lo de volta ao seu título real deve estar no -VIEWWILLAPPEAR:
- (void)viewWillAppear:(BOOL)animated;
{
[self setTitle:@"Real Title"];
[super viewWillAppear:animated];
}
Pode parecer um pouco hacky, mas é melhor do que tentar substituir a funcionalidade da barra de navegação. Lutar com a pilha de controladores Nav/Nav pode ser muito frustrante.
Atenciosamente.