2012-02-22 17 views
163

¿Puede alguien explicarme cuál es la diferencia exacta entre modal y push segue?¿Cuál es la diferencia entre Modal y Push segue en Storyboards?

Sé que cuando usamos push, el segue se agrega a una pila, por lo que cuando seguimos usando push, ¿ocupa la memoria?

¿Puede alguien mostrarme cómo se implementan estos dos?

Modal segues pueden ser creados simplemente ctrl-clic y arrastrando a destino, pero cuando lo hago con los push mis aplicación se bloquea.

Estoy presionando desde un botón a un UINavigationController que tiene un UIViewController.

Respuesta

163

A push Segue está agregando otro VC a la pila de navegación. Esto supone que el VC que origina el empuje es parte del mismo controlador de navegación al que pertenece el VC al que se está agregando la pila. La administración de memoria no es un problema con los controladores de navegación y una pila profunda. Mientras se ocupe de los objetos que pueda estar pasando de un VC a otro, el tiempo de ejecución se encargará de la pila de navegación. Ver la imagen de una indicación visual: NavStack

Un Segue modal es sólo un VC VC presentar otra forma modal. Los VCs no tienen que ser parte de un controlador de navegación y el VC que se presenta de forma modal generalmente se considera como un "hijo" del VC presentador (principal). El VC presentado de forma modal generalmente no tiene barras de navegación o barras de pestañas. El VC presentador también es responsable de descartar el VC modal que creó y presentó.

Espero que esto ayude.

+1

@EIJay gracias por la gran explicación. Una pregunta más ¿cuándo tengo que usar el modal y cuándo usar el push segue? –

+41

Generalmente, cuando desea mostrar una vista de detalle de una vista de resumen, use un controlador de navegación y presione Segmentos. Si la vista "principal" no se relaciona realmente con los datos con respecto a la vista "secundaria", entonces use un modal. Un buen ejemplo para una vista modal sería una vista de inicio de sesión. La vista de inicio de sesión realmente no tiene ninguna relación en lo que respecta a los datos con la vista "principal". –

+0

¿Puede un controlador de vista modal llamar a otro controlador de vista modal? –

6

La vista de inserción debe construirse en navigationController.

Haga clic en su master view, a continuación, en la barra de menús, seleccione:

EDITOR->embed in->navigationController 
1

Esto está empujando a los controles utilizando empuje a medida y segue métodos para el guión gráfico Story Board

Y modal es manera de navegar a través de puntos de vista sin utilizar Storyboards.

+0

¿Cómo crear una transición modal sin usar guiones gráficos? – jianpx

+0

@jianpx: puede segue solo cuando usa storyboards. De lo contrario, puede usar el controlador de navegación o el control PresentModalView para cambiar de vista. – Pushkraj

+0

@ Pushkraj gracias. Entonces, ¿quieres decir que no hay forma de crear segue por código? – jianpx

8

Swift 3.0 y 8.2.1 XCode actualización

1. Empuje Segue

empuje segue se ha renombrado como Muestra segue. Para crear segue de inserción, el controlador de vista principal debe estar integrado en el controlador de navegación. El controlador de navegación proporciona una barra de navegación. Una vez que conecte dos controladores de vista con segregación de inserción, el controlador de vista infantil automáticamente tendrá una barra de navegación en la parte superior. El controlador de vista secundaria se agregará en la parte superior de la pila de navegación.

enter image description here

empuje segue también proporciona funciones predeterminadas.El controlador de vista secundaria tendrá un botón de retroceso que lo regresará al controlador de vista principal. También puede deslizar hacia la derecha para abrir el controlador de vista infantil. La animación para segue de inserción es como deslizar páginas horizontalmente.

enter image description here

Si bien se le permite hacer una transición suave empujón de un controlador de vista que no está en un controlador de navegación, se perderán todas las características como la barra de navegación, animación, etc gesto cuando lo hace. En este caso, debe incrustar su controlador de vista principal dentro del controlador de vista de navegación primero y luego hacer la transición de inserción a los controladores de vista secundarios.

enter image description here

2. Modal Segue

A segue modal (es decir, presente de forma modal), por otro lado, se presenta sobre el controlador de vista actual. El controlador de vista secundaria no heredará el controlador de vista de navegación, por lo que la barra de navegación se perderá si presenta la transición modal desde un controlador de vista con controlador de vista de navegación. Debe incrustar el controlador de vista secundario en el controlador de navegación nuevamente y comenzar una nueva pila de navegación si lo desea de nuevo. Si desea volver al controlador de vista principal, debe implementarlo usted mismo y llamar al dismiss desde el código.

enter image description here

Animación para segue modal es que el controlador de vista del niño se sube desde la parte inferior de la página. El controlador de vista de navegación también se ha ido en esta demo

enter image description here

Cuestiones relacionadas