Pregunta

Estoy escribiendo un UITabBarController personalizado para poder controlar completamente la apariencia de la barra de pestañas. Lo tengo todo funcionando, así que tengo una variedad de controladores de vista que maneja.

El controlador tiene una vista principal que llena la pantalla, y dentro tiene una vista UIV en la parte inferior de la barra de pestañas. Esa vista de barra de pestañas tiene un botón para cada controlador de vista. Cuando se presionan los botones, agrego la vista del controlador de vista a la vista principal y configuro su marco para que no cubra la vista de la barra de pestañas:

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

Todo esto funciona bien, y puedo pasar fácilmente entre los controladores de vista. Sin embargo, cuando presento un controlador de vista modal, y luego lo descarto, ¡la vista del controlador de vista actual se convierte en pantalla completa y cubre mi barra de pestañas! He intentado configurar las máscaras de tamaño automático para que no cambien de tamaño, pero sigue sucediendo.

También intenté agregar las vistas de los controladores de vista en la parte inferior (debajo de la barra de pestañas) usando:

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

¡Pero cuando hago eso, la barra de pestañas es incluso visible sobre cualquier vista modal! Lo cual es extraño. ¡Creo que hay algo que no entiendo, por lo que agradecería que alguien pueda explicar lo que me falta!

Gracias,

Mike

¿Fue útil?

Solución 3

He logrado encontrar una mejor manera de controlar la apariencia de la barra de pestañas simplemente insertando subvistas en la parte superior de la barra de pestañas de los controladores de pestañas. ¡Ha funcionado de maravilla!

Otros consejos

Intente configurar

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

en el método viewWillAppear del controlador

Prueba esto. Creo que desea controladores de vista dinámica dentro del controlador de barra de pestañas.

-(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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top