2011-11-14 16 views
23

En iOS5 usando la característica del guión gráfico quiero crear un contenedor personalizado que tendrá 2 ViewControllers incrustado en él. Por ejemplo, incruste el controlador de vista de tabla y el controlador de vista en uno ViewController.Cómo crear un contenedor de controlador de vista personalizado usando el guión gráfico en iOS 5

Es decir, un controlador de vista tendrá 2 relación:

  1. al controlador de vista de tabla
  2. para ver controlador, el cual a su vez tendrá 4 UIImage ver o UIButton en ella

Es la creación de este tipo de relación es posible utilizando la característica de arrastrar arrastrar del guión gráfico solo & no programáticamente?

+0

Tengo un problema con su ejemplo. El evento viewViewDownload de CustomViewController nunca se activa ... ¿Es normal? ¿Hay alguna manera de arreglar eso? De lo contrario, esta es una muy buena publicación! Gracias. –

Respuesta

14

, Solo debe tener un controlador de vista para controlar la escena. Sin embargo, este viewController puede tener otros dos controladores de vista que controlan subvistas particulares en su escena. Para hacer esto, crea propiedades en su escena viewController, en su caso una para su tableViewController y otra para su vista. Me gusta mantener las cosas juntas, así que hago estas dos salidas viewControllers y las creo en el constructor de interfaces. Para crearlos en el constructor de interfaz, extraiga un Objeto de la biblioteca de Objetos y establezca su tipo al viewController correspondiente. Conéctelo al tomacorriente apropiado que acaba de crear en viewController de su escena. Nota: esto es importante; de ​​lo contrario, viewController se liberará si usa ARC y bloquea su aplicación. A continuación, enganche estos viewControllers a la vista que desea que controlen y listo.

Como alternativa, puede crear instancias y saltar su vistaControladores en su vista de escenasControlador si lo prefiere.

Espero que esto ayude.

Editar: Si esto no es una buena idea y realmente va en contra de la HIG, debe mantener solo un ViewController para cada pantalla de contenido y en su lugar intentar crear una clase de vista adecuada y tener el control de vista única con las interacciones entre los diversos puntos de vista.

+3

Podemos crear una salida para las vistas, pero ¿cómo se puede crear una salida para ver el controlador en el guión gráfico? – Sayali

+2

Abre el creador de interfaces y selecciona tu guión gráfico. En la esquina inferior derecha, verá la biblioteca de objetos (donde puede ver los controladores y las vistas) escribir el objeto en el cuadro de búsqueda y verá el pequeño objeto amarillo/naranja arrastrarlo a su escena y cambiar su tipo en el inspector de identidad para su controlador de vista. Luego conecte una vista que esté en su escena para que la controle y eso es todo. En su código solo tiene un IBOutlet para su clase de controlador de vista y conecte el objeto a eso. –

+0

¿Pero cómo conectar una vista para controlar?Lo que hice fue lo siguiente: seleccionar el archivo del guión gráfico-> arrastrar viewcontroller (Controlador de vista principal), TableviewController (uno de los controladores de subvista) y 1 UIViewController más (otro controlador de subvista). Luego, en el controlador de vista principal, creé 2 IBOutlet para UITableViewController y UIViewController. Luego seleccione Main UIViewController-> haga clic derecho sobre él y conecte la IBOutlet creada a TableViewController en storyBoard. Pero no creó la conexión. Avíseme si estoy haciendo algo mal – Sayali

0

Hay una manera de hacerlo que no es también hacky. Se describe en la siguiente URL para UITabBarControllers, que puede usar el primer controlador de vista en la lista, controlar la primera subvista y el segundo controlar el otro. O bien, probablemente puedas adaptar el código para que funcione con UISplitViewController.

http://bartlettpublishing.com/site/bartpub/blog/3/entry/351

Básicamente, funciona mediante la sustitución de la tabBarController en tiempo de ejecución después de iOS ha terminado de configurarlo.

+0

FYI - a partir de iOS 7, esto ya no funciona. Puede haber una manera de hacer que algo similar funcione, pero cambiamos nuestro proyecto a barras de pestañas estándar. – johnnyb

Cuestiones relacionadas