24

我的 iOS 应用的 Storyboard 中有多个 UIViewController。我想从不同的 UIViewController 打开其中一个 UIViewControllers(在故事板中)。

我已经尝试了下面的代码,但即使我在 iOS 5 之前使用它并且它运行良好,它也无法正常工作。

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

如何使用 iOS 5 Storyboards 执行此操作?

4

6 回答 6

55

假设您有故事板,请转到故事板并给您的 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];
于 2012-01-19T10:05:33.533 回答
7

以下将适用于Swift 3.0及更高版本。

故事板

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)
于 2015-11-03T11:25:26.610 回答
4

使用 Swift 3.1 版本更新

如果您还没有嵌入导航控制器,那么

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)
于 2017-06-12T09:22:51.753 回答
4

斯威夫特 5

let storyboard = UIStoryboard(name: "YourStoryboardName", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "ControllerIdentifier")
self.present(vc, animated: true, completion: nil)
于 2020-03-10T23:29:17.933 回答
3

在 swift 4.2 答案中,对于那些想要这个答案而无需在模态和快速更新版本中导航的人。

let storyboard = UIStoryboard(name: "YourStoryboardName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "mainViewController")
self.present(controller, animated: true, completion: nil)
于 2018-12-05T13:11:09.280 回答
1
UIViewController *initialHelpView = [[UIStoryboard storyboardWithName:@"StoryBoard_IDentifier" bundle:nil] instantiateViewControllerWithIdentifier:@"ViewController_Identifier"];
[self presentViewController:initialHelpView animated:YES completion:nil];
于 2015-06-01T05:45:35.973 回答