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?

Foi útil?

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;

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top