2012-03-14 26 views
5

Tengo una aplicación con varios controladores de visualización controlados desde un controlador de barra de pestañas. Desde uno de estos controladores de vista que quiero (al hacer clic en un botón) pasar a otro controlador de vista y mantener la barra de pestañas en la parte inferior de la segued para ver.¿Cómo dentro de un controlador de barra de pestañas paso de un controlador de vista a otro y conservo la barra de pestañas?

He usado

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([segue.identifier isEqualToString:@"newView"]){ 
     UIViewController *controller =segue.destinationViewController; 
     controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
     [self presentModalViewController:controller animated:YES]; 
    } 
} 

Esto funciona bien, excepto la barra de pestañas no se encuentra en la segued para ver (un marcador de posición para la muestra en el guión, pero no aparece cuando la aplicación está RUN) también he intentado reemplazar

[self presentModalViewController:controller animated:YES]; 

con

[self presentViewController:controller animated:YES completion:nil]; 

pero eso tampoco funciona.

Un poco de depuración muestra que para el controlador de vista segued-to, la propiedad tabBarController se establece en nil.

¿Hay alguna forma de mantener la barra de pestañas en el controlador de vista de salida?

Respuesta

1

De su explicación, no creo que quiera un controlador modal. Modal se usa para superponer, lo que hace que la barra de pestañas sea inútil. Desde su guión gráfico, seleccione su transición y seleccione presionar, no modal.

enter image description here

empuje vs modal (Nótese la barra de pestañas):

enter image description here enter image description here

+0

estoy usando empuje no modal. La barra de pestañas se muestra en el guión gráfico, pero no aparece cuando se ejecuta la aplicación – John

+0

Para iniciar la transición del código use '[self performSegueWithIdentifier: @" theSegueIdentifier "remitente: selfOrSomeObject]' que es un método de 'UIViewController'. Esta línea 'controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController: controlador animado: YES]; 'se usa para las transiciones ** modales ** no empuja. Eliminar esta linea – Gobot

+1

También desde los documentos de Apple para presentModalViewController: animación ... "En dispositivos iPhone y iPod touch, la vista de modalViewController siempre se presenta a pantalla completa. En iPad, la presentación depende del valor en la propiedad modalPresentationStyle. – Gobot

Cuestiones relacionadas