如何从storyboard以编程方式加载UIViewController?

时间:2014-08-24 16:59:53

标签: ios uiviewcontroller swift

我在Main.storyboard中创建了一个带有几个按钮和标签的UIViewController。我试图使用self.presentViewController切换到该视图控制器,但它不会从故事板加载视图。默认情况下,它只会加载一个黑屏。关于如何从我在故事板中创建的内容加载视图的任何想法?

self.presentViewController(ResultViewController(), animated: true, completion: nil)

3 个答案:

答案 0 :(得分:35)

您执行此操作的方式只会创建视图控制器的新实例。它不会从您在Interface Builder中定义的原型中创建一个。相反,你应该使用它,其中" SomeID"是您在Interface Builder中分配给视图控制器的故事板ID。

if let resultController = storyboard!.instantiateViewControllerWithIdentifier("SomeID") as? ResultViewController {
    presentViewController(resultController, animated: true, completion: nil)
}

您可以在Interface Builder的身份检查器中为您的视图控制器分配故事板ID。

enter image description here

答案 1 :(得分:5)

Full Swift 3代码,包括Storyboard的实例化:

let storyboard = UIStoryboard.init(name: "Main", bundle: Bundle.main)

if let mainViewController = storyboard.instantiateInitialViewController() {
    present(mainViewController, animated: false, completion: nil)
}

答案 2 :(得分:0)

enter image description here

SWIFT 5.2

首先,您应该为viewcontroller定义一个StoryboardID,然后使用此代码

 let storyboard = UIStoryboard(name: "Main", bundle: nil) // type storyboard name instead of Main
 if let myViewController = storyboard.instantiateViewController(withIdentifier: "myViewControllerID") as? CourseDetailVC {
       present(myViewController, animated: true, completion: nil)
 }