2011-11-02 14 views
28

Probablemente haya una solución simple pero no puedo resolverlo.¿Vincular un nuevo controlador de visualización a Storyboard?

Estoy usando guiones gráficos para la interfaz.

Empiezo con un controlador de barra de pestañas, pero antes de que el usuario pueda usar la aplicación, el usuario tiene que autenticarse a través de una vista de inicio de sesión que se empuja de manera modal al inicio.

Quiero configurar la vista de inicio de sesión en el mismo guión gráfico, pero no puedo identificar cómo vincular el controlador de vista en el guión gráfico y mi código.

Lo que he hecho:

  • Crear un nuevo archivo a través UIViewController subclase> nueva> nuevo archivo.
  • Arrastre un nuevo UIViewController en el tablero de historia
  • Establecer la clase en la pestaña clase personalizada
  • arrastra una UILabel con fines de prueba.
  • plazo

Sin etiqueta ...

Respuesta

40

tirar de una nueva UIViewController que actuará como el controlador de vista de inicio de sesión en el MainStoryboard. En el inspector de atributos cambie el identificador a LoginViewController (o algo apropiado). A continuación, agregue

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
    [vc setModalPresentationStyle:UIModalPresentationFullScreen]; 

    [self presentModalViewController:vc animated:YES]; 
} 

al primer controlador de vista y la pantalla de inicio de sesión se cargará desde el guión gráfico y se presentará.

Espero que esto ayude.

+0

No, eso no es lo que quise decir. Tengo archivos .m y .h y no quiero ningún archivo .xib, pero configuro la vista en el guión gráfico principal. – Justin

+0

He explicado cómo crear la pantalla de inicio de sesión dentro del guión gráfico principal para que no necesite un xib. –

+0

Pero eso no es lo que quiero. Por ejemplo, cuando tiene una vista de tabla dinámica, desea presionar una vista cuando se presiona una celda. Pero, ¿cómo puedes hacer eso con guiones gráficos? – Justin

6

La respuesta de Scott Sherwood anterior es la respuesta más correcta que encontré después de mucha búsqueda. A pesar de un cambio muy leve según el nuevo SDK (6.1), presentModalViewController muestra obsoleto.

Aquí hay un cambio muy pequeño a la respuesta anterior.

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
    HomeViewController * hvc = [sb instantiateViewControllerWithIdentifier:@"LoginView"]; 
    [hvc setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [self presentViewController:hvc animated:YES completion:nil]; 
+0

¡Gracias por compartir! – Justin

1

Soy nuevo en este campo. Pero si el primer controlador de vista es un controlador de vista de navegación y su controlador de vista de raíz es un controlador de vista de tabla. Si desea presionar un controlador de vista como el LoginViewController cuando hace clic en la celda, y también desea volver a la vista de tabla usando la barra de navegación. Lo recomiendo de esta manera:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *controller = [sb instantiateViewControllerWithIdentifier:@"LoginViewController"]; 
    [self.navigationController pushViewController:controller animated:YES]; 
} 

De esta manera, puede tener la navegación.

Por cierto, no sé por qué aparecerá este tipo de problema. Supongo que cuando el loginviewcontroller se crea en el código, su vista no es la vista en el guión gráfico. Si alguien conoce la causa, ¡por favor dime! ¡Gracias!

Cuestiones relacionadas