Tabbar não acessar a NavigationController
-
05-07-2019 - |
Pergunta
Eu tenho um aplicativo navigationController.
Eu empurro um tabbar para a vista. Tabs estão trabalhando título é alterado, perfeito. Agora um dos meus guias tem uma lista e eu tento ligar-se a uma página filha dentro da barra de páginas:
NextViewController *nextController = [[NextViewController alloc] initWithNibName:@"ProfileDetailController" bundle:nil];
[self.navigationController pushViewController:nextController animated:YES];
Nada acontece. Claro que isso funciona:
self.view = nextController.view;
Eu quero ser capaz de empurrar a esta sub-página dentro do meu tabbar E mudar os botões navigationbars. Isso é possível?
Solução
Parece que você está empurrando um UITabBarController
em um UINavigationController
? De documentação da Apple , você não pode empurrar um controlador de barra de guia para um controlador de navegação.
O que você provavelmente quer fazer é o oposto: tem um controlador de barra de abas com UINavigationController
s como os itens de tabulação. Isto é semelhante à interface em, digamos, o aplicativo ou Telefone aplicativo iPod.
Outras dicas
Concordo com Alex - um TabBarController dentro de um controlador de navegação não parece ser um padrão de interface agradável
.De qualquer forma, para responder à sua pergunta: Você já tentou acessar o controlador de navegação através do controlador de barra de guia
self.tabBarController.navigationController
Eu não tenho certeza se isso funciona, mas você pode experimentá-lo.
Acho que encontrei uma solução fácil.
Na sua classe onde você quer empurrar um ponto de vista, declarar uma UINavigationController
local como um propterty:
@interface userMenu : UIViewController {
UINavigationController *navigationController;
}
@property (nonatomic, retain) UINavigationController *navigationController;
Lembre-se de sintetizá-lo.
Em sua classe para o tabBarController
:
NSArray *viewControllersArray = [self.tabBarController viewControllers];
userMenu *childUserMenu = (userMenu*) [viewControllersArray objectAtIndex:0];
childUserMenu.navigationController = self.navigationController;
Depois que você pode fazer [self.navigationController pushViewController:nextController animated:YES];