如何将项目从使用故事板转换为不再使用故事板?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将项目从使用故事板转换为不再使用故事板?相关的知识,希望对你有一定的参考价值。

如果我有一个已经使用了Storyboard的Xcode项目,现在我想切换到以编程方式加载视图控制器,我该怎么做?

答案

这是关于这样做的in-depth article。 TLDR是:

  1. 在项目设置中,清除主界面:

enter image description here

  1. 在您的didFinishLaunching中使用如下代码: func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { window = UIWindow(frame: UIScreen.main.bounds) let homeViewController = UIViewController() homeViewController.view.backgroundColor = UIColor.red window!.rootViewController = homeViewController window!.makeKeyAndVisible() return true }
另一答案

慢。一步一步来。

故事板不是全有或全无。您可以继续将故事板用于有用的地方,并且可以对不适合的地方使用程序化加载,并且您可以一步一步地在它们之间进行转换。

如果你想从Storyboard中展开一个片段,那么第一步是删除导入和导出它的segues,然后以编程方式从instantiateViewController(withIdentifier:)的Storyboard加载该视图控制器。

然后,您可以将给定场景拉入其自己的单独故事板(选择场景,编辑器,重构到故事板......),以便它完全独立于所有其他场景。然后,您可以将一个视图控制器重新编写为编程代码,而不会中断项目中的任何其他内容。你也可以在这里混合搭配;从Storyboard加载视图控制器,但在init(nibName:bundle:)中手动处理初始化。

您还可以将故事板视图剪切并粘贴到其自己的XIB文件中,这有时更易于使用,而无需放弃GUI布局系统。选择视图,复制,创建一个新的XIB文件(在模板中称为“视图”),然后粘贴它。这对init(nibName:bundle:)来说更容易使用。

但关键是不要试图一次性修改整个项目。如果有一部分故事板导致故障,请重构它们。如果您更喜欢程序代码,那么请一次重构一步,直到完成或直到您做得足够开心。

正如Senseful的回答所说,顶级场景略显特别。您可以在更改或不更改其他场景的情况下更改它。

以上是关于如何将项目从使用故事板转换为不再使用故事板?的主要内容,如果未能解决你的问题,请参考以下文章

如何将故事板连接到代码

如何将 xcode 8 故事板转换为 xcode 9

故事板上的 ZXing 图书馆

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

如何:访问故事板中的服务对象?

如何使用单个故事板uiviewcontroller为多个子类