2012-01-19 20 views
15

Tengo varios UIViewControllers en el Storyboard de mi aplicación iOS. Quiero abrir uno de los UIViewControllers (en el guión gráfico) desde un UIViewController diferente.Tablero gráfico ViewController de otro ViewController

He intentado el siguiente código, pero no está funcionando aunque lo usé antes de iOS 5 y funcionó bien.

- (IBAction)addNotes:(id)sender { 
    NotesViewController *notesView = [[NotesViewController alloc] initWithNibName:@"NotesViewController" bundle:nil]; 
    [self presentModalViewController:notesView animated:YES]; 
} 

¿Cómo puedo realizar esta acción con iOS 5 Storyboards?

Respuesta

48

Asumiendo que tiene guión gráfico, vaya al guión gráfico y darle a su VC un identificador (inspector), luego hacer:

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

Asumiendo que tiene un archivo xib que quieres hacer:

UIViewController *vc = [[UIViewController alloc] initWithNibName:@"NIBNAME" bundle:nil]; 
[self.navigationController pushViewController:vc animated:YES]; 

sin un archivo xib:

UIViewController *vc = [[UIViewController alloc] init]; 
[self.navigationController pushViewController:vc animated:YES]; 
+0

hey gracias darwin, por su respuesta ... pero el xib es pres ent en el guión gráfico? – Ranjit

+0

Entiende mal tu pregunta. Actualizado mi respuesta. Hacer acercamiento 1). – DAS

+0

hey lo comprobé con el primer acercamiento pero no hubo suerte, Darwin, se estrelló – Ranjit

1
UIViewController *initialHelpView = [[UIStoryboard storyboardWithName:@"StoryBoard_IDentifier" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController_Identifier"]; 
[self presentViewController:initialHelpView animated:YES completion:nil]; 
4

Lo siguiente funcionará en Swift 3.0 y superior.

StoryBoard

let storyBoard = UIStoryboard(name: "Main", bundle: nil) 
let mainViewController = storyBoard.instantiateViewController(withIdentifier: "Identifier") 
self.navigationController?.pushViewController(mainViewController, animated: true) 

.xib

let viewController = UIViewController(nibName: "NibName", bundle: nil) 
    self.navigationController?.pushViewController(viewController, animated: true) 

Sin .xib

let viewController = UIViewController() 
self.navigationController?.pushViewController(viewController, animated: true) 
1

actualización con la versión 3.1 Swift

si no tienen embed control de navegación a continuación

let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let viewController2 = storyBoard.instantiateViewController(withIdentifier: "ViewController2") 
self.present(viewController2, animated: true, completion: nil) 

y, si tenido mando de navegación embed continuación

let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let viewController2 = storyBoard.instantiateViewController(withIdentifier: "ViewController2") 
self.navigationController?.pushViewController(viewController2, animated: true) 
Cuestiones relacionadas