Guión de storyboards en Xcode, ¿dónde deberíamos usarlo?

Hay un nuevo control en Xcode7 beta llamado Storyboard Reference . A continuación se muestra su image.

introduzca la descripción de la imagen aquí

Tiene su descripción como

Proporciona un marcador de position para un controller de vista en un guión gráfico externo. Segues conectado a este marcador de position instanciará el controller de vista referencedo en time de ejecución.

Entonces las preguntas son

  1. ¿En qué situaciones debemos usar esto?
  2. ¿Se utiliza para conectar los controlleres de vista de storyboard a través de Segue?
  3. ¿Se utiliza este enfoque para replace VC de otro storyboard de manera programática?
  4. ¿Funcionará en la versión anterior de iOS (antes de iOS 9)?

ACTUALIZACIÓN (6 de enero de 2016) : solo quiero mencionar rápidamente que usar references de Storyboard es muy simple y te ayudará a usar Storyboards de una manera mucho más limpia y mantenible. Un buen caso de uso es, por ejemplo, un UITabBarController con varias tabs. Simplemente cree un Storyboard para cada pestaña y en su Main.Storyboard enlace a esos Storyboards individuales usando references de Storyboard. El uso es muy sencillo: después de crear una reference de Storyboard, solo tiene que darle el nombre del file Storyboard individual al que desea vincular y establecer el controller de vista inicial dentro de ese Storyboard individual. ¡Eso es! 🙂

Lo que sigue ahora es la respuesta original que di a la pregunta de @ YogeshSuthar.

  1. Esto se puede usar en casos en los que esté utilizando múltiples storyboards en su aplicación. hasta ahora tendría que instanciar los controlleres de vista desde otros storyboards mediante progtwigción, parece que ahora puede usar esta reference y crear su segue en los storyboards al igual que con los controlleres de vista del mismo guión gráfico

  2. sí, conectas un controller de vista desde tu storyboard actual con otro controller de vista desde un storyboard diferente y puedes crear una segue entre estos dos

  3. sí, esto puede usarse para replace el código que se utilizó anteriormente para crear una instancia de controlleres de vista desde otros storyboards mediante progtwigción

  4. [ACTUALIZACIÓN thx a @AlexBasson] Las references de Storyboard pueden implementarse en iOS 8 , OS X 10.10 y watchOS 1 .

Uso de la reference de Storyboard

Bueno, otras respuestas son correctas para mis preguntas.

Y quiero publicar el uso de la Storyboard Reference que se utiliza para abrir Controles de vista desde otro storyboard a través de segue sin escribir ningún código. 🙂

Pasos

  1. Primero crea un nuevo guión gráfico que lo nombre todo lo que quieras (lo NewStoryboard ).
  2. Coloque su controller de vista (o cualquier controller de vista) en NewStoryboard .
  3. Dale una Storyboard ID (he dado newVC ).

introduzca la descripción de la imagen aquí

  1. Cambia de nuevo a tu storyboard principal.
  2. Arrastra y suelta el control de Storyboard Reference en este storyboard.
  3. Seleccione el control de Storyboard Reference del Storyboard Reference y select el Attributes Inspector .
  4. Seleccione su nuevo storyboard NewStoryboard .
  5. Proporcione ID de reference como newVC (que utilizó en el storyboard de NewStoryboard ).
  6. Conecte esta Storyboard Reference través de segue desde ViewController. Ahora abrirá este VC a través de segue sin escribir código. 🙂

introduzca la descripción de la imagen aquí

  1. ¿Funcionará en la versión anterior de iOS (antes de iOS 9)?

Parece que tal vez no: /

Las references de Storyboard requerían una aplicación que tuviera por lo less iOS 9.0, OS X 10.11 o WatchKit 2.0 para watchOS.

Fuente: Biblioteca de desarrolladores de watchOS: agregar una reference a otro guión gráfico

  1. ¿Funcionará en la versión anterior de iOS (antes de iOS 9)?

Aquí hay una solución (verificada por Xcode 8 e iOS 8.2):

  1. En el controller de vista de la pestaña, agregue una vista de contenedor cuyo marco ocupe toda la vista (agregue restricciones para hacer esto si es necesario).
  2. Elimine el controller de vista embedded que fue agregado automáticamente por la vista de contenedor.
  3. Cree su reference de storyboard y arrastre la segencia de inserción desde la vista de contenedor a esta reference.
  4. Si aún no lo has hecho, crea el Storyboard y asigna la reference del Storyboard.
  5. En el nuevo Storyboard, puede simular el aspecto de la barra de tabs seleccionando el primer controller de vista y en el Inspector de attributes, en Métricas simuladas -> Barra inferior, seleccionando una barra de tabs para mostrar (por ejemplo, Translúcido).

captura de pantalla

Acabo de probar la reference de storyboard en Xcode 7 con iOS 8 y falló.

 Illegal Configuration: Storyboard References cannot be the destinations of relationship segues prior to iOS 9.0 

En la última documentation de iOS Developer Library para Xcode Releases también se agrega esta nota ( Versión actual: Xcode 7.2.1) :

Las references de Storyboard ahora se pueden implementar en iOS 8, OS X 10.10 y watchOS 1.

Eso significa buenas noticias, pero aún ten en count que:

Las references de Storyboard no pueden ser los destinos de las relaciones segues anteriores a iOS 9.0

Entonces si eres consciente de estos dos puntos, entonces ya puedes hacerlo 🙂

Cuando tenemos una gran aplicación con demasiadas pantallas y modules, dividir storyboard en múltiples storyboards según modules es una buena opción y conveniente. Mientras usa multiple storyboard, si necesita conectar segue entre viewControllers de storyboard diferente, puede usar este control. Si está utilizando este control, no es necesario hacer cosas de encoding como instictViewViewController y pushViewController, etc. Puede simplemente conectar el segue, realizar el segue y, si lo necesita, puede usar prepareForSegue.

Hablemos de todas sus preguntas:

  1. ¿En qué situaciones debemos usar esto? – Creo que has encontrado tu respuesta arriba.

  2. ¿Se utiliza para conectar los controlleres de vista de storyboard a través de Segue? –

  3. ¿Se usa este enfoque para replace VC de otro storyboard mediante progtwigción? – Nada que ver con la encoding mientras usa este control

  4. ¿Funcionará en la versión anterior de iOS (antes de iOS 9)? – Puede funcionar, no lo he intentado