如何在故事板中创建UIViewController布局,然后在代码中使用它?

问题描述:

我的iOS 5应用程序中有一个Storyboard。如何在故事板中创建UIViewController布局,然后在代码中使用它?

在那里,我创造了许多屏幕,它完美的作品。

但是有一个视图控制器是我在代码中创建的,而不是UI操作的结果,但是在处理数据结束时。我想显示这个视图控制器,然后作为一个modalViewController,但也有故事板编辑器设计它。

可能吗?使用笔尖我这样做:

ResultsController *rc = [[ResultsController alloc] initWithNibName:@"ResultsController" 
                  bundle:nil]; 
[self.navigationController presentModalViewController:rc animated:YES]; 
[rc release]; 

现在我真的没有一个nib文件,所以我该怎么做呢?

看看UIStoryboard类。有一个instantiateViewControllerWithIdentifier方法。因此,您需要在Storyboard Editor中为您的ResultsController ViewController设置Identfier。

你可以做这样的事情

UIViewController *viewController = 
    [[UIStoryboard storyboardWithName:@"MainStoryboard" 
           bundle:NULL] instantiateViewControllerWithIdentifier:@"ResultsController"]; 

[self presentModalViewController:viewController animated:NO]; 
+0

谢谢!而且......有没有办法设置一个按钮,直接在故事板上关闭ModalViewController?没有将其附加到仅调用此解雇方法的代码中的方法? – kender

+1

我不认为它没有代码就可以工作,因为在Storyboard中没有任何其他ViewController的连接。 – mafis

在你的故事板:

  1. 添加一个通用的UIViewController。
  2. 使用Identity Inspector,将其自定义类设置为您的ResultsController。
  3. 从源视图控制器到ResultsController
+0

这似乎不工作:( –

创建模式赛格瑞对于斯威夫特4

let viewController = UIStoryboard.init(name: "MainStoryboard", bundle: nil).instantiateViewController(withIdentifier: "ResultsController") 
self.present(viewController, animated: true, completion: nil)