Objeto externo en storyboards

Es time de que Apple nos haya proporcionado storyboards, estoy siguiendo su evolución desde el principio, tiene algunos pros y contras, pero seguro que este es un "futuro" si lo comparas con los files "xib" de la vieja escuela. La

Lo que estoy enterado aquí es algo llamado "Objeto externo". Al usar "xibs" estándar, siempre podemos drag and drop dos types especiales de objects de la biblioteca de objects IB (panel derecho)

"Propietario del file" es un ejemplo de este "object externo".

Pudimos drag and drop un ExternalObject más a nuestro file xib y conectarlo a algún object externo instanciando dicho ViewController usando esta API UINib:

- (NSArray *)instantiateWithOwner:(id)ownerOrNil options:(NSDictionary *)optionsOrNil; 

… sí, fue posible, documentation:

Si el file nib contiene algún object proxy más allá del object proxy Propietario del file, puede especificar los objects de reemploop en time de ejecución para esos proxies mediante el dictionary de opciones. En ese dictionary, agregue la key UINibExternalObjects y establezca su valor en un dictionary que contenga los nombres de cualquier object proxy (las keys) y los objects reales para usar en su lugar. El nombre del object proxy es la cadena que le asigna en el campo Nombre de la window del inspector del Generador de interfaces.

Ahora cuando se trata de storyboards, los objects externos no están disponibles en el inspector de objects. Eso tendría sentido porque no he encontrado ninguna API que nos permita inyectar objects externos en un controller de vista creado a partir de storyboard. Solo tenemos esto:

 - (id)instantiateInitialViewController; - (id)instantiateViewControllerWithIdentifier:(NSString *)identifier; 

Entonces, no hay forma de pasar nuestras "opciones".

Sin embargo…

Objeto externo no está disponible en el guión gráfico hasta que … hagas un proyecto Swift (tal vez hay otro factor que habilita Objeto externo en mi guión gráfico, no estoy seguro).

Por lo tanto, es posible tener una configuration donde los storyboards nos permitan drag and drop objects externos en un storyboard. ¿Pero cómo podemos aprovechar esto? ¿Cómo puedo cargar un controller de vista desde el guión gráfico y conectar estos objects proxy?

  • hilo de devuelo

Puede drag and drop un NSObject en una escena de controlleres de vista y darle la class correcta en el inspector.

introduzca la descripción de la imagen aquí

se puede cablear como se esperaba

introduzca la descripción de la imagen aquí

Creé un proyecto de ejemplo para esta pregunta / respuesta y lo publiqué en GitHub .