Como botão esconder 'Voltar' na barra de navegação no iPhone?
-
03-07-2019 - |
Pergunta
Eu adicionei um controle de navegação para alternar entre vistas em meu aplicativo. Mas alguns dos pontos de vista não deve ter 'Back' (o anterior título) botão. Todas as ideias sobre como ocultar o botão de volta?
Solução
Objective-C:
self.navigationItem.hidesBackButton = YES;
Swift:
navigationItem.hidesBackButton = true
Outras dicas
A melhor maneira é combinar estes, por isso vai esconder o botão voltar, mesmo se você configurá-lo manualmente:
self.navigationItem.leftBarButtonItem=nil;
self.navigationItem.hidesBackButton=YES;
botão hide volta com código abaixo ...
[self.navigationItem setHidesBackButton:YES animated:YES];
ou
[self.navigationItem setHidesBackButton:YES];
Além disso, se você tem UINavigationBar
personalizado, em seguida, usar o código abaixo
self.navigationItem.leftBarButtonItem = nil;
Use o código:
self.navigationItem.backBarButtonItem=nil;
Em Swift :
Adicione esta para o controller
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.setHidesBackButton(true, animated: false)
}
Na viewDidLoad função do UIViewController usar o código:
self.navigationItem.hidesBackButton = YES;
Não se esqueça que você precisa chamá-lo sobre o objeto que tem o controlador nav. Por exemplo, se você tem nav controlador empurrando em um controlador de barra de abas com um RootViewController, chamando self.navigationItem.hidesBackButton = YES
na RootViewController não fará nada. Você realmente tem que chamar self.tabBarController.navigationItem.hidesBackButton = YES
Não se esqueça que nós temos o slide para gesto de volta agora. Você provavelmente vai querer remover este 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 na sua opinião controlador
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, ele não teve nenhum efeito visual. Eu estou usando storyboards com uma vista que é "embutido" em um controlador de navegação.
Eu, então, ao nível do código adicionar meus menuItems e por algum motivo o "backbutton" é visível quando a depuração visualmente a hierarquia de exibição, e meu Ícone menuItem é exibida abaixo do botão "back" invisível.
Eu tentei as configurações, como sugerido nos vários métodos de gancho e que não teve nenhum efeito. Então eu tentei uma abordagem mais brutal e iterar sobre os subexibição que também não teve nenhum efeito.
I inspecionados meus tamanhos de ícones e parecia ser ok. Depois de se referir a ele maçã Interface Homem Orientação I confirmou meus ícones estão corretas. (1 pixel menor no meu caso 24px 48px 72px).
A parte mais estranha é, então, a correção real ...
Ao adicionar o BarButton item dar-lhe 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];
Ele não estava funcionando para mim em todos os casos quando eu definir
self.navigationItem.hidesBackButton = YES;
em viewWillAppear ou ViewDidLoad, mas funcionou perfeitamente quando eu defini-lo em init do viewController.
tentar este -
self.navigationController?.navigationItem.hidesBackButton = true
Em c # ou Xamarin.ios, this.NavigationItem.HidesBackButton = true;