2012-02-20 25 views
14

Estoy diseñando una aplicación para iPad usando el guión gráfico. Tengo un ViewController que muestra una vista. Mi problema es que cuando un administrador ve esa pantalla, debe ver cierta vista, mientras que cuando un usuario ve esa pantalla, debería ver otra. Pensé que debería crear dos vistas para la misma pantalla y cargar la adecuada dependiendo de quién la haya registrado. Sin embargo, aunque podría hacerlo en los archivos XIB en versiones anteriores de iOS, el guión gráfico no me permite crear una vista fuera del ViewController, así que no puedo diseñar vistas múltiples.Guión gráfico: crear múltiples vistas en el guión gráfico para el mismo ViewController

Mis preguntas son:

  1. podemos diseñar dos vistas en guión para el mismo ViewController? ¿Si es así, entonces cómo?
  2. Necesito ver las dos Vistas una al lado de la otra para poder hacer cambios en ellas por separado. Tenerlos como sub-vistas de la vista principal cargará ambas vistas en tiempo de ejecución. Quiero ser capaz de cargar sólo uno de los puntos de vista dependiendo de quién haya iniciado sesión.

Gracias de antemano por su ayuda

+0

Buena pregunta. Me pregunto por qué no recibiste respuesta. Estaré feliz de saber la respuesta. – bashan

+0

¡Me pregunto lo mismo también! Qué pena que la respuesta parece ser no. – Christopher

+0

Se contestó la misma pregunta aquí: http://stackoverflow.com/questions/9498010/custom-views-with-storyboard –

Respuesta

3

Puede mostrar la vista de un controlador del guión gráfico en otro, pero es complicado . Tenía un controlador de vista de pestañas en el guión gráfico donde una de las vistas tenía una NavBar con un control segmentado que determinaba qué vista de dos vistas aparecía en el controlador. Llamaré a esto el controlador "primario". Lo que hice fue en el controlador "principal", dentro de la Vista principal, agregué dos vistas más una encima de la otra que encajan entre la barra de navegación y la barra de pestañas y las IBOutlet conectadas a ellas.

@property (retain, nonatomic) IBOutlet UIView *leftView; 
@property (retain, nonatomic) IBOutlet UIView *rightView; 

Cuando se presiona el segmento izquierdo del control segmentado, el RightView estaba oculto (setHidden: TRUE) y la leftView era unhidden. Viceversa para el segmento correcto.

Para mostrar la vista desde otro ViewController dentro de uno de los anteriores Vistas, en el controlador "primaria" vista creé una IBOutlet para cada ViewController secundaria

@property (retain, nonatomic) IBOutlet CustomViewController1 *leftViewController; 
@property (retain, nonatomic) IBOutlet CustomViewController2 *rightViewController; 

Los diseños de los controladores de vista secundarias tienen que coincidir el controlador "principal" en términos de la apariencia de la barra de navegación, la barra de estado y los elementos de tabbar

Luego tuve que crear una instancia del guión gráfico manualmente en ViewDidLoad en el controlador de vista "principal".

self.leftViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomViewControllerOne"]; 
self.rightViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"CustomViewControllerTwo"]; 

Donde "CustomViewControllerOne" y "CustomViewControllerTwo" son los valores de los campos "identificador" de los controladores en guión gráfico, que tuve para entrar.

De nuevo en viewDidLoad en el controlador "primaria" I añadieron las vistas controlador como subvistas de los que yo estaba Ocultar y mostrar basado en el control segmento

[self.leftView addSubview:leftViewController.view]; 
[self.rightView addSubview:rightViewController.view]; 

encontré que si trataba de añadirlos como subvistas de la vista principal sin crear los dos contenedores de vista (leftView y RightView) los controladores de vista secundarios aparecieron desplazados en el controlador "primario".

De modo que cuando el usuario presionó el segmento izquierdo, apareció la vista de CustomViewController1 y cuando presionaron el segmento derecho, apareció la vista de CustomViewController2.

Cuestiones relacionadas