objective for features compilador iphone objective-c xcode ipad storyboard

iphone - for - xcode ios 12



Xcode 4.5 Storyboard ''Exit'' (4)

Consulte también No se puede conectar Storyboard. Desenrolle Segue, que aclara los requisitos para dar vida al ícono de Exit. Debe tener, más arriba en la jerarquía del controlador de vista, un método que sea:

  1. Marcado como IBAcción

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

Si se cumplen ambas 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.

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

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

Esto muestra lo trivialmente fácil que es ahora avanzar y retroceder desde un controlador de vista presentado, en oposición a todo el trabajo que tenía 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 pueden ser eliminados).

Acabo de instalar Xcode 4.5 para compatibilidad con iOS6, y he visto un nuevo ícono llamado ''Salir'' en mi Guión Gráfico, listado debajo de mis controladores de vista junto con ''Primer Respondedor'', etc. Un pequeño ícono verde con la etiqueta ''Salir''.

Puedo encontrar cualquier cosa en él y no sé cómo se puede usar.

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


Esto se llama un " Segue de relajación ". Desafortunadamente, no hay documentación para esto hasta el momento, excepto una breve mención en la nueva lista de funciones de XCode 4.5 que dice:

Los segmentos de desenrollo pueden permitir la transición a instancias existentes de escenas en un guión gráfico

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

Simplemente inicie sesión en el Centro de desarrollo de iOS de Apple con los detalles de su cuenta de desarrollador y luego vaya a la página de videos de WWDC 2012 y vea "Adoptando el guión gráfico en su aplicación" (es el quinto desde arriba). La discusión de los desenrollamientos empieza en el momento 37:20 .

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

Un objeto de marcador de posición llamado Exit para desenrollar bloqueos. De forma predeterminada, cuando un 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.

(Desde iOS6 docset> General> Primeros pasos)

Y aquí hay un buen ejemplo de cómo puede implementar uno

Otra actualización:

Aquí hay una nota técnica de Apple con respecto a este tema.


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

A -> ... -> Z

Desea tener un botón en la vista Z que le permita al usuario volver a A

Entonces, lo que debe hacer es dar la opinión de que desea retroceder hasta, en este caso, A , un método de instancia que está marcado como IBAction y toma 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í hay un ejemplo:

Obj-C:
En la interfaz de A (no de Z ):

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

En la implementación de A (no Z ):

- (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. }

Rápido:
En la fuente de A (no Z ):

@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, controle arrastrar desde un elemento en Z (IE, un botón de cancelación) a la Exit Z Escaneará a través de todas las vistas más arriba en la jerarquía de vistas que tienen un IBAction que acepta solo una UIStoryboardSegue * como una acción y las enumera para que pueda elegir.

Afortunadamente esto fue más sencillo 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


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 descubrí que son los requisitos completos:

  • Marcado como IBAction
  • Toma un parámetro que es un UIStoryboardSegue *
  • Debe tener una acción declarada (pero no necesariamente implementada [es decir, un método en la sección de implementación .M ]).
  • Puede estar en la declaración de interfaz de cualquier clase, incluso en la sección de interfaz de .M , excepto en 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;