2012-05-19 15 views
11

Me gusta mucho tener todas mis vistas en el Storyboard, pero hay momentos en que tendré una vista que se muestra en función de un botón generado por código no habrá referencia de Segue, estará totalmente desconectado en el Storyboard. Sin embargo, me gustaría diseñarlo en el guión gráfico, así puedo tener una buena visión general de todas mis pantallas.vista de carga del StoryBoard que no tiene un Segue

¿Es posible para mí cargar el XIB (o lo que sea que esté en un guión gráfico) diseñado en el guión gráfico cuando se carga un UIViewControler?

+0

Puede darnos un ejemplo de lo que estás tratando de hacer? ¿Qué tipo de datos es responsable de la creación de la nueva vista ? En general, sugiero que crees una nueva clase o una vista con la misma clase y, dependiendo de la entrada del usuario, ocultas o creas el contenido de la vista. Sería fácil para usted – Shawn

Respuesta

24

Lo hago en mis proyectos:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
[self.navigationController pushViewController: myController animated:YES]; 

Sólo asegúrese de que ha configurado el identificador del controlador correctamente. Esto se puede hacer por:

  1. seleccionar el controlador en Storyboard
  2. en el panel Utilidades, haga clic en el inspector de atributos. Lo que sea que decida colocar en el campo Identificador es lo que se incluye en la declaración 'instanciadoViewControllerWithIdentifier'.

Espero que esto ayude.

+0

perfecto, exactamente lo que estaba buscando, gracias. Aunque no es totalmente necesario, es agradable ver todos mis UIViews en una pantalla. – Slee

+0

Inicialmente no entrenó, pero luego ... '[self presentViewController: vc animated: YES completion: NO];' me hizo la magia en la última línea. –

+0

Sí Mayu, debe tenerse en cuenta que usar [self.navigationController push ...] solo funciona si ese controlador de vista está incrustado en un controlador de vista de navegación. – mihai

2

Debe asignar Storyboard ID a su controlador de vista.

IB> Mostrar el inspector de identidad> Identidad> Storyboard ID

Storyboard ID

Swift

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let viewcontroller = storyboard.instantiateViewControllerWithIdentifier("viewController") 
        as? UIViewController 
if let navigationController = self.navigationController { 
    navigationController.pushViewController(viewcontroller!, animated: true) 
} 
Cuestiones relacionadas