2012-01-19 9 views
15

Mam wiele kontrolerów UIView w mojej Storyboard aplikacji na iOS. Chcę otworzyć jeden z UIViewControllers (w storyboardie) z innego UIViewController.Prezentacja storyboardu ViewController z innego ViewController

Próbowałem kodu poniżej, ale nie działa, mimo że użyłem go przed iOS 5 i działało dobrze.

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

Jak mogę wykonać tę akcję na iOS 5 Storyboards?

Odpowiedz

48

Zakładając masz storyboard, przejdź do Storyboard i dać VC identyfikator (inspektor), a następnie wykonaj:

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

Zakładając masz plik XIB chcesz zrobić:

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

bez pliku XIB:

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

hej dzięki darwin, za odpowiedź ... ale Xib jest na pierwszym miejscu ent w storyboardie? – Ranjit

+0

Źle zrozumiałeś swoje pytanie. Zaktualizowałem moją odpowiedź. Czy podejście 1). – DAS

+0

hej Sprawdziłem z pierwszym podejściem, ale bez powodzenia, Darwin, jego rozbicie – Ranjit

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

Następujące będzie działać na Swift 3.0 i wyżej.

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) 

bez .xib

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

Aktualizacja z wersji Swift 3.1

jeśli nie osadzić panelu nawigacyjnego następnie

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

, a jeśli miał embed kontroler nawigacyjny następnie

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