Adicionei um controle de navegação para alternar entre visualizações no meu aplicativo. Mas algumas das visualizações não devem ter o botão 'Voltar' (o título anterior). Alguma idéia de como ocultar o botão Voltar?
Adicionei um controle de navegação para alternar entre visualizações no meu aplicativo. Mas algumas das visualizações não devem ter o botão 'Voltar' (o título anterior). Alguma idéia de como ocultar o botão Voltar?
Respostas:
Objetivo-C:
self.navigationItem.hidesBackButton = YES;
Rápido:
navigationItem.hidesBackButton = true
self.navigationItem.leftBarButtonItem = nil;
. Se você configurou explicitamente o botão da barra esquerda, pode usar self.navigationItem.leftBarButtonItem = nil;
. self.navigationItem.hidesBackButton = YES;
irá esconder o botão Voltar Item
A melhor maneira é combiná-las, para ocultar o botão voltar, mesmo se você o configurar manualmente:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
ocultar o botão voltar com o código abaixo ...
[self.navigationItem setHidesBackButton:YES animated:YES];
ou
[self.navigationItem setHidesBackButton:YES];
Além disso, se você tiver personalizado UINavigationBar
, tente o código abaixo
self.navigationItem.leftBarButtonItem = nil;
Em Swift :
Adicione isso ao controlador
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
Use o código:
self.navigationItem.backBarButtonItem=nil;
Não esqueça que você precisa chamá-lo no objeto que possui o controlador nav. Por exemplo, se você tiver um controlador nav pressionando um controlador de barra de guias com um RootViewController, chamar self.navigationItem.hidesBackButton = YES
o RootViewController não fará nada. Você realmente teria que ligarself.tabBarController.navigationItem.hidesBackButton = YES
Não esqueça que agora temos o slide para trás. Você provavelmente deseja remover isso também. Não se esqueça de ativá-lo novamente, se necessário.
if ([self.navigationItem respondsToSelector:@selector(hidesBackButton)]) {
self.navigationItem.hidesBackButton = YES;
}
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
Adicione este código ao seu controlador de exibição
UIView *myView = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 300, 30)];
UIBarButtonItem *btnL = [[UIBarButtonItem alloc]initWithCustomView:myView];
self.navigationItem.leftBarButtonItem = btnL;
Para mim, nenhuma das opções acima parecia funcionar, não tinha efeito visual. Estou usando storyboards com uma exibição "incorporada" em um controlador de navegação.
Depois, no nível do código, adiciono meus itens de menu e, por algum motivo, o "backButton" fica visível ao depurar visualmente a hierarquia de visualizações, e meu ícone de menuItem é exibido abaixo do invisível "botão de retorno".
Eu tentei as configurações, conforme sugerido nos vários métodos de gancho e que não tiveram efeito. Então, tentei uma abordagem mais brutal e iteramos na subview, que também não teve efeito.
Inspecionei os tamanhos dos meus ícones e parecia estar ok. Depois de me referir à diretriz de interface humana da Apple, confirmei que meus ícones estão corretos. (1 pixel menor no meu caso 24px 48px 72px).
A parte mais estranha, então, é a correção real ...
Ao adicionar o item BarButton, atribua a ele um título com pelo menos um caractere . No meu caso, um caractere de espaço.
Espera que isso ajude alguém.
//left menu - the title must have a space
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " <--THE FIX
style:UIBarButtonItemStylePlain
target:self
action:@selector(showMenu)];
leftButtonItem.image = [UIImage imageNamed:@"ic_menu"];
[self.navigationItem setLeftBarButtonItem:leftButtonItem];
tente este -
self.navigationController?.navigationItem.hidesBackButton = true
Em c # ou Xamarin.ios, this.NavigationItem.HidesBackButton = true;
navigationItem.leftBarButtonItem = nil
navigationItem.hidesBackButton = true
Se você usar esse bloco de código dentro do didLoad ou do loadView, funcionou, mas não funcionou perfeitamente.
Qual é a solução perfeita?
Adicione o componente BarButtonItem do componentView (Command + Shift + L) à barra de navegação viewControllers de destino.
Selecione BarButtonItem set Title = "" no painel direito