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

Tha*_*rid 12 uiviewcontroller ios swift

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

self.presentViewController(ResultViewController(), animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

Mic*_*lum 37

你这样做只会创建一个视图控制器的新实例.它不会从您在Interface Builder中定义的原型中创建一个.相反,您应该使用它,其中"SomeID"是您在Interface Builder中分配给视图控制器的故事板ID.

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

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

在此输入图像描述


Jus*_*ely 6

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

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

if let mainViewController = storyboard.instantiateInitialViewController() {
    present(mainViewController, animated: false, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)