2012-01-19 5 views
15

У меня есть несколько UIViewControllers в раскадровке приложения iOS. Я хочу открыть один из UIViewControllers (в раскадровке) из другого UIViewController.Нынешняя раскадровка ViewController от другого ViewController

Я пробовал код ниже, но он не работает, хотя я использовал его до iOS 5, и он работал нормально.

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

Как я могу выполнить это действие с помощью раскадровки iOS 5?

ответ

48

Если у вас есть раскадровки, перейдите к раскадровке и дать VC идентификатор (инспектор), а затем сделать:

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

Если у вас есть файл XIb вы хотите сделать:

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

Без XIb файла:

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

эй спасибо Дарвин, за ваш ответ ... но xib is pres в раскадровке? – Ranjit

+0

Непонятный вопрос. Обновлен мой ответ. Подход 1). – DAS

+0

эй я проверил с первым подходом, но не повезло, Дарвин, его сбой – Ranjit

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

Следующие будут работать на Swift 3.0 и выше.

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) 

Без .xib

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

Обновление с Swift 3.1 версии

если вы еще не EMBED навигационный контроллер затем

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

и, если вы были встраивать навигации контроллер затем

let storyBoard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
let viewController2 = storyBoard.instantiateViewController(withIdentifier: "ViewController2") 
self.navigationController?.pushViewController(viewController2, animated: true) 
Смежные вопросы