繁体   English   中英

如何从故事板以编程方式加载 UIViewController?

[英]How to load UIViewController programmatically from storyboard?

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

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

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

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

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

在此处输入图片说明

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

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

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

在此处输入图片说明

斯威夫特 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)
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM