2012-07-03 12 views
9

Estoy construyendo una aplicación de iPhone usando guiones gráficos y tengo un problema con el controlador de la barra de pestañas. En una de las vistas que está vinculada desde el controlador de la barra de pestañas (vista1), hay un botón que conduce a otra vista (vista2). En View2, hay un botón que lleva de vuelta a View1. Muy directo. Pero cuando paso de view1 a view2, la barra de pestañas desaparece, y lo que es peor, cuando vuelvo a View1, la barra de pestañas aún se ha ido ... ¿Cómo puedo solucionar eso? (Todavía tengo que poner CUALQUIER código en la aplicación, solo está el guión gráfico y la manzana proporcionada AppDelegate Class (y también un archivo principal, supongo, pero no tengo la intención de tocar eso).Desaparece el controlador de la barra de pestañas cuando se mueve a otra vista (SDK de iOS, usando guiones gráficos)

Cualquier respuesta es altamente apreciado!

+0

Cómo están presentando el segundo punto de vista? – Dustin

+0

cuando el usuario hace clic en el botón simplemente los transfiere a View2 – byteSlayer

+0

¿Hizo alguna configuración para esto? ¿O acabas de usar las funciones de la barra de pestañas? De su problema, parece que está usando un segue – Dustin

Respuesta

30

Si lo hace un segue modal desde un punto de vista que es una vista en la barra de pestañas, se librará de la barra de pestañas para la vista modal que está presentando.

en segundo lugar, cuando se Sègue que está creando una nueva instancia del controlador de vista. Así que supongo que está pasando de view1 a view2 y perdiendo la barra de pestañas, luego está regresando a view1. En este momento ha creado view1, view2, y una segunda copia de view1 que no hav e una barra de pestañas.

Sugeriría una de dos cosas.

1.) Si desea mantener las pestañas en la parte inferior cuando pasa de view1 a view2, haga clic en view1, en la parte superior de la pantalla seleccione Editor/Embed In/Navigation Controller. Esto incrustará su view1 en un controlador de navegación. Luego, si cambia su transición de Modal a Push, mantendrá sus barras de pestañas en la parte inferior. La barra de navegación en la parte superior también facilita volver atrás de la vista 2 para ver 1 de la forma correcta (al abrir la vista) en lugar de crear una nueva transición. Si no le gusta la barra de navegación, puede cambiar la propiedad "Barra superior" a "Ninguna" en el inspector. Luego tendrá que crear otra forma en view2 para volver a view1. (APRIANDO EL CONTROLADOR, NO POR SEGUIR)

2) Si no desea configurar un controlador de navegación, tendrá un poco más de tiempo para mantener la barra de pestañas en la parte inferior del controlador view2. De hecho, no estoy seguro de que puedas hacerlo en absoluto con una transición modal, probablemente tendrías que escribir algún tipo de transición personalizada. De cualquier manera, si quieres volver a la transición a view1 y llegar al controlador correcto (no a una nueva versión sin las pestañas), entonces debes adjuntar una acción al botón que estés usando para segue y usar el siguiente código (también adjunto el código de control de navegación de empuje segues, en caso de que se crea un controlador de navegación y deshacerse de la barra de navegación)

para modal Segue:.

[self dismissModalViewControllerAnimated:YES]; 

para segue empuje:

[self.navigationController popViewControllerAnimated:YES]; 

Su mejor apuesta es usar la navegación método del controlador, ya que está seguro de mantener sus pestañas. Luego puede usar la barra de navegación para regresar (de la manera más fácil, sin código) o puede deshacerse de ella y usar un botón y el código de arriba.

¡Buena suerte!

+0

Gracias por la respuesta detallada. ¡Es de mucha ayuda! – byteSlayer

+0

Utilicé la solución 1. Pero cuando lo hice (vista seleccionada n. ° 1), tenía dos controles de navegación porque ya tenía uno en mi guión gráfico. Eliminé el controlador de navegación principal que estaba detrás del controlador de la barra de pestañas. En cambio, utilicé un controlador de navegación como este. Controlador de barra de pestañas -> Controlador de barra de navegación -> Controlador de tabla de -> Controlador de tabla detallada. Así que para cada pestaña tengo su propio controlador de navegación independiente. Puede haber una forma compartida de usar un controlador de navegación, pero parece estar funcionando bastante bien. –

+0

Sí, así es exactamente como lo hice en algunos proyectos. Es lo que estaba tratando de describir arriba. –

2

Tuve el mismo problema, sé que esta es una pregunta antigua, pero [self dismissModalViewControllerAnimated:YES]; está en desuso en iOS 6.

lo que solía decir:

[self dismissViewControllerAnimated:YES completion:nil];

Cuestiones relacionadas