如何在 Xcode 11 中启动没有情节提要 >= iOS 13 的新项目?

Joh*_*kex 5 xcode objective-c ios13 xcode11

带有 iOS 13 的 Xcode 11 现在以与之前略有不同的设置启动,将 AppDelegate.m 文件中的许多功能移动到名为 SceneDelegate.m 的新文件中 - 删除 Main.storyboard 并在 AppDelegate 中设置根视图控制器不再是选项,导致以下错误:

-[AppDelegate window]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如何在没有故事板的情况下继续构建新项目?

Sap*_*day 22

查看这篇文章:Xcode 11.3 | [从项目中删除故事板][1]

第 1 步: 删除故事板

成功创建新项目后,导航到 Xcode 窗口左角的 Project Navigator。我们需要从这里删除 Main.storyboard 文件。

步骤 2: 删除主界面

然后移至“常规”选项卡并在此处删除您的主界面链接,然后按 Enter。

第 3 步: 从 Info.plist 中删除 Storyboard 文件。

从 Info.plist 中删除 Main.storyboard。

第 4 步: 让您的应用程序在没有 Storyboard 的情况下运行。

如果您在 Project Navigator 中仔细看过,您可以看到 2 个委托文件 AppDelegate.swift 和 SceneDelegate.swift。因此,在之前的 Xcode 中,我们已经看到 AppDelegate.swift 中存在 UIWindow 变量,而现在对于 Xcode 11,它已经消失了。现在您可以在 SceneDelegate.swift 文件中看到窗口变量。在此文件中,您需要为加载 xib 文件进行配置。

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
    guard let windowScene = (scene as? UIWindowScene) else { return }
    window = UIWindow(frame: windowScene.coordinateSpace.bounds)
    window?.windowScene = windowScene
    window?.rootViewController = ViewController()
    window?.makeKeyAndVisible()
}
Run Code Online (Sandbox Code Playgroud)

就是这样!现在您可以在没有 Storyboard 的情况下运行您的应用程序。

GitHub 示例项目

  • 从 Xcode 14 开始,您还必须清除 Target → Build Settings →“UIKit Main Storyboard File Base Name”。 (2认同)

Cy-*_*4AH 1

答案已经有问题:您需要添加窗口属性。Xcode 11 不会生成它。