2012-09-13 19 views
101

Acabo de instalar Xcode 4.5 para compatibilidad con iOS6, y he visto un nuevo ícono llamado 'Exit' en mi Storyboard, listado bajo mis controladores de vista junto con 'First Responder' etc. Un poco verde icono con la etiqueta 'Salir'.Xcode 4.5 Storyboard 'Exit'

No encuentro nada ni sé cómo se puede usar.

¿Alguien sabe algo al respecto, cómo funciona, para qué sirve?

+1

En una pregunta similar que he publicado esta respuesta: http://stackoverflow.com/questions/12569316/does-anyone-know-what-the-new-exit-icon-is-used-for- when-editing-storyboards-usi/13437054 # 13437054 Ayuda a explicar cómo usar la función de salir (desenrollar) – Eric

Respuesta

72

Esto se llama "Desconectar Segue". Desafortunadamente no hay documentación de esto hasta ahora, salvo una breve mención en XCode 4.5 nueva lista de características que indica:

segues Unwind pueden permitir la transición a las instancias existentes de escenas en un guión gráfico

La buena noticia es que hay una sesión de WWDC 2012 que explica esas criaturas (entre otras cosas).

Puede simplemente iniciar sesión en el iOS Dev Center de Apple con sus detalles de cuenta de desarrollador y luego ir al WWDC 2012 videos page y ver "Adoptar Storyboard en su aplicación" (es el quinto desde la parte superior) La discusión de desenrollar comienza a partir del momento 37: 20.


Actualización: Aquí hay más información sobre el tema de la documentación de Apple

Un objeto marcador de posición de salida llamado para desenrollar seques. De forma predeterminada, cuando el usuario descarta una escena secundaria, el controlador de vista para esa escena se desenrolla (o regresa) a la escena principal: esa es la escena que originalmente hizo la transición a la escena hija. Sin embargo, el objeto Salir permite que un controlador de vista se desenrolle en una escena arbitraria.

(De iOS6 docset> General> Introducción)

And here is a nice example of how you can implement one


Otro Actualización:

Here is a technical note from Apple con respecto a este tema.

+3

OK, entonces, ¿cómo lo usa? Intenté presionar y hacer clic en el control desde el objeto de salida en la parte inferior de un controlador de visualización, pero no se enlazó con nada. – shim

+4

Básicamente tiene que definir un método para su transición de desenrollado y luego conectarse desde un elemento al botón 'salir' seleccionando el método al que desea llamar. Puede encontrar [un ejemplo aquí] (http://www.techotopia.com/index.php/Using_Xcode_Storyboarding_ (iOS_6) #Unwinding_Storyboard_Segues) (He actualizado mi respuesta también para incluir el ejemplo) – Alladinian

+1

-1: Muchas palabras , poca información útil. Después de leer sobre esto y utilizarlo en mi propia aplicación, escribí esta respuesta, que con suerte es más útil: http://stackoverflow.com/a/25829835/901641 – ArtOfWarfare

4

Consulte también Cannot Connect Storyboard Unwind Segue que aclara los requisitos para dar vida al ícono de Salida.Debe tener, más arriba en la jerarquía controlador de vista, un método que es:

  1. marcado como IBAction

  2. toma un parámetro que es un UIStoryboardSegue *

Si tanto las se cumplen las condiciones, el ícono de Salir lo verá y le permitirá conectarse a él arrastrando el control desde un botón en el mismo controlador de vista.

he ahora también publicado ejemplo más simple del mundo aquí:

https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/ch19p638presentedViewControllerStoryboard (fijo 12 julio de 2013)

Esto muestra cómo trivialmente fácil que ahora es segue a y vuelta desde un controlador de vista presentados , a diferencia de todo el trabajo que tuvo que hacer previamente para entregar información de ida y vuelta (las cosas en la plantilla con un delegado y un protocolo, todos los cuales ahora se pueden eliminar).

3

Simplemente agregando una ligera sutileza a la definición de requisitos que podría ayudar. Esto se basa en experimentar en Xcode 4.6. Descubrí que es específicamente y solo la declaración (!) Del método que habilita la respuesta de control-arrastre deseada de Xcode. Esto es lo que he encontrado para ser los requisitos completos:

  • marcado como IBAction
  • toma un parámetro que es un UIStoryboardSegue *
  • debe haber declarado una acción (pero no se aplica necesariamente [se refiere a un método en el .M sección de implementación]).
  • Puede estar en la declaración de interfaz de cualquier clase, incluso en la sección de interfaz de .M, excepto la clase appdelegate. (No vi ninguna dependencia en su posición en la jerarquía del controlador. Puede agregar cualquier archivo antiguo y el sistema parece agregar todos los métodos que tienen el parámetro UIStoryboardSegue y mostrarlos en el menú del icono Salir). Tenga en cuenta que el control El menú de arrastre incluso le mostrará su método si el método está en la clase de la escena que está manipulando en el editor del guión gráfico, pero aparecerá sin dos puntos y no parece desencadenar ninguna acción en el tiempo de ejecución.

Ejemplo: -(IBAction)anymethodname:(UIStoryboardSegue *)myvariable;

10

Imagine que tiene una secuencia de vistas en el guión gráfico:

A -> ... -> Z

¿Quieres tener un botón en vista Z que permite al usuario ir todo el camino de regreso a A.

Así que lo que hay que hacer es dar la opinión de que desea realizar una copia de todo el camino a, en este caso, A, un método de instancia que está marcado como IBAction y toma en un único parámetro de tipo UIStoryboardSegue *. El nombre del método y la variable no importan. Lo que hagas dentro de la implementación tampoco importa.Aquí está un ejemplo:

Obj-C:
En A 's Interface (no Z' s):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue; 

En A 's Aplicación (no Z' s):

- (IBAction)cancelSignup:(UIStoryboardSegue *)unwindSegue { 
    // Only "implemented" to satisfy a respondsToSelector: search. 
    // You can actually implement more stuff here, if you want, IE, if 
    // you need to reach out to a server to mention that this screen was 
    // returned to from a later screen. 
} 

Swift:
In A 's fuente (no Z' s):

@IBAction func cancelSignup(unwindSegue: UIStoryboardSegue) { 
    // Only "implemented" to satisfy a respondsToSelector: search. 
    // You can actually implement more stuff here, if you want, IE, if 
    // you need to reach out to a server to mention that this screen was 
    // returned to from a later screen. 
} 

Ahora, dentro de su guión gráfico, de control arrastre desde un elemento de Z (es decir, un botón de cancelación) a Z 's Exit. Escaneará a través de todas las vistas más arriba en la jerarquía de vistas que tienen un IBAction que acepta solo un UIStoryboardSegue * como una acción y los enumera para que pueda elegir.

Afortunadamente esto fue más directo y útil que las respuestas existentes. Descubrí que este enlace era particularmente útil, por lo que si hay algún detalle que todavía no se ha aclarado después de leer mi respuesta, quizás esto pueda ser útil (intenté resumir toda la información útil de este largo artículo en una breve respuesta): http://www.freelancemadscience.com/fmslabs_blog/2012/9/24/advanced-storyboard-techniques.html

Cuestiones relacionadas