Pergunta

Eu estou escrevendo um UITabBarController personalizado para que eu possa controlar totalmente a aparência da barra de guias. Eu tenho tudo isso de trabalho, por isso tenho um conjunto de controladores de vista que ele lida.

O controlador tem uma vista principal, que preenche a tela, e dentro dele tem um UIView na parte inferior para a barra de abas. Esse ponto de vista barra de guia tem um botão para cada controlador de vista. Quando os botões são pressionados eu adicionar a visão do controlador de vista à vista principal, e defini-lo do quadro, de modo que ele não cobre o ponto de vista barra de abas:

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight);

Isso tudo funciona muito bem, e eu posso passar rapidamente entre os controladores de vista muito bem. No entanto, quando eu apresentar um controlador de vista modal, e depois descartá-lo, vista do atual controlador de vista se torna tela cheia e cobertas até meu bar guia! Eu tentei configurar as máscaras redimensionamento automático para não redimensionar, mas é continua acontecendo.

Eu também tentei adicionar o ponto de vista controladores visão de para a parte inferior (abaixo da barra de abas) usando:

[self.view insertSubview:controller.view atIndex:0];

Mas quando eu fizer isso, a barra de abas é ainda visível acima de quaisquer vistas modais! O que é estranho. Eu acho que há algo que eu não estou entendendo, então eu ficaria muito grato se alguém pode explicar o que eu estou sentindo falta!

Obrigado,

Mike

Foi útil?

Solução 3

Eu consegui encontrar uma maneira melhor para controlar a aparência da barra de guias, simplesmente inserindo subviews ao topo da barra de guias controladores de tabulação. Ele trabalhou um mimo!

Outras dicas

Tente configurar

controller.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height - kTabBarHeight); 

no método viewWillAppear do controlador

Tente fazer isto. Eu acho que você quer controladores de vista dinâmicos dentro de controlador de barra de abas.

-(void)applicationDidFinishLaunching:(UIApplication *)application {

// Add the tab bar controller's current view as a subview of the window
tabBarController.delegate=self;
tabBarController=[[UITabBarController alloc] init];

mainDashBoard=[[DashBoard alloc] initWithNibName:@"DashBoard" bundle:nil];
mainSearchView=[[SearchView alloc] initWithNibName:@"SearchView" bundle:nil];
mainMoreView=[[MoreView alloc] initWithNibName:@"MoreView" bundle:nil];

UINavigationController *nvCtr0=[[[UINavigationController alloc] init] autorelease];
UINavigationController *nvCtr1=[[[UINavigationController alloc] initWithRootViewController:mainDashBoard] autorelease];
UINavigationController *nvCtr2=[[[UINavigationController alloc] initWithRootViewController:mainSearchView] autorelease];
UINavigationController *nvCtr3=[[[UINavigationController alloc] initWithRootViewController:mainMoreView] autorelease];
UINavigationController *nvCtr4=[[[UINavigationController alloc] init] autorelease];//[[[UINavigationController alloc] initWithRootViewController:nil] autorelease];

tabBarController.viewControllers=[NSArray arrayWithObjects:nvCtr0,nvCtr1,nvCtr2,nvCtr3,nvCtr4,nil];

nvCtr0.tabBarItem.enabled=NO;
nvCtr4.tabBarItem.enabled=NO;

[window tabBarController.view];
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top