Estou mostrando uma visão modal que é uma UITableViewController
classe. Por algum motivo, ele não mostrará a barra de navegação quando eu mostro. Aqui está o meu código:
SettingsCreateAccount *detailViewController = [[SettingsCreateAccount alloc] initWithStyle:UITableViewStyleGrouped];
detailViewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
detailViewController.navigationController.navigationBarHidden = NO;
[self.navigationController presentModalViewController:detailViewController animated:YES];
detailViewController = nil;
[detailViewController release];
Achei que fosse mostrado por padrão? Se ajudar, estou ligando de outra classe que também é UITableViewController
gerenciada por a UINavigationController
. Ideias?
fonte
Esta é uma maneira de exibir a barra de navegação para quem está usando storyboards, sugerida pelo Tutorial da Apple sobre Storyboard .
Como um controlador de visualização modal não é adicionado à pilha de navegação, ele não obtém uma barra de navegação do controlador de navegação do controlador de visualização de tabela. Para dar ao controlador de visualização uma barra de navegação quando apresentada modalmente, incorpore-a em seu próprio controlador de navegação.
fonte
No iOS 7 e você deseja apenas uma barra de navegação em seu controlador de visualização modal para mostrar um título e alguns botões? Experimente esta mágica em seu UITableViewController:
fonte
[self.view bringSubviewToFront:self.navigationBar];
no final de-(void)layoutNavigationBar
.Quero compartilhar como a solução aceita pode ser usada em projetos com storyboards:
A abordagem simples é colocar um controlador de navegação em branco do storyboard antes do VC, que deve ser apresentado modalmente, para que as relações sejam semelhantes a:
Tentamos essa abordagem por um tempo e percebemos que nossos storyboards ficam "poluídos" por um grande número desses controladores de navegação intermediários quando cada um! deles é usado exclusivamente para um! apresentação de algum outro controlador, que queremos apresentar modalmente com barra de navegação.
Nossa solução atual é encapsular o código da resposta aceita para uma transição personalizada:
Tendo este segue em nosso projeto, não criamos mais controladores de navegação intermediários em nossos storyboards, apenas usamos este ModalPresentationWithNavigationBarSegue como:
Espero que esta resposta seja útil para pessoas que gostam de evitar duplicações desnecessárias nos storyboards de seus aplicativos.
fonte
Se você só precisa de um
NavigationBar
, pode adicionar uma instância deUINavigationBar
e atribuir BarItems a ele.fonte
Eu só queria acrescentar algo ao que @Scott disse. Sua resposta é definitivamente a maneira mais fácil e aceita de fazer isso agora com Storyboards, iOS 7 e 8 ... (e em breve, 9).
Definitivamente, adicionar um controlador de visualização ao Storyboard e incorporá-lo conforme descrito por @Scott é o caminho certo a seguir.
Então, basta adicionar a segue arrastando e controlando do controlador de visualização de origem para o destino (aquele que você deseja mostrar modalmente), selecione "Apresentar modalmente" quando a pequena visualização aparecer com as opções para o tipo de segue. Provavelmente bom dar um nome a ele também (no exemplo abaixo eu uso "presentMyModalViewController").
Uma coisa que eu precisava que estava faltando é o caso de @ Scott é quando você deseja realmente passar alguns dados para aquele controlador de visualização apresentado modalmente que está embutido no controlador de navegação.
Se você pegar o segue.destinationViewController, ele será um UINavigationController, não o controlador que você incorporou ao UINavigationController.
Então, para chegar ao controlador de visualização incorporado dentro do controlador de navegação, aqui está o que eu fiz:
Espero que isto ajude!
fonte