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

问题描述 投票:0回答:2

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

ios cocoa-touch uistoryboard
2个回答
0
投票

这是关于这样做的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 }

0
投票

慢。一步一步来。

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

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.