objective-c - 如何在 Xcode 11 中启动没有 Storyboard >= iOS 13 的新项目?

标签 objective-c xcode ios13 xcode11

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

-[AppDelegate window]: unrecognized selector sent to instance

enter image description here

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

最佳答案

检查这篇文章:Xcode 11.3 | [从项目中删除 Storyboard ][1]
第一步:删除 Storyboard
成功创建新项目后,导航到 Xcode 窗口左角的 Project Navigator。我们需要从这里删除 Main.storyboard 文件。
第二步:移除主界面
然后移动到常规选项卡并在此处删除您的主界面链接,然后按 Enter。
第三步:从 Info.plist 中删除 Storyboard 文件。
从 Info.plist 中删除 Main.storyboard。

第四步:让您的应用在没有 Storyboard 的情况下运行。
如果您在 Project Navigator 中仔细看过,您可以看到 2 个委托(delegate)文件 AppDelegate.swift 和 SceneDelegate.swift。所以在之前的 Xcode 中,我们已经看到 AppDelegate.swift 中存在 UIWindow 变量,而现在对于 Xcode 11,它已经消失了。现在您可以在 SceneDelegate.swift 文件中看到 window 变量。
在此文件中,您需要为加载 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()
}
🤘就是这样!
现在您可以在没有 Storyboard 的情况下运行您的应用程序。
GitHub sample project

关于objective-c - 如何在 Xcode 11 中启动没有 Storyboard >= iOS 13 的新项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58655903/

相关文章:

xcode - 在 Xcode 中复制捆绑资源时解析符号链接(symbolic link)

ios - 更改导航栏颜色

ios - 如何使用dynamicProvider为暗模式创建初始化程序

iphone - 许多 NSDictionary 的 NSArray。为给定键找到具有必要值的 NSDictionary 的最佳方法是什么?

iphone - 如何解决 NSException 格式使用非字符串文字的安全问题

objective-c - 如何在 ImageView 上方放置自定义按钮>

Xcode 11.3 在 iOS 13 设备上运行应用程序时抛出异常,但不在模拟器上运行

ios - 尝试捕获整个应用程序

iphone - 在iOS应用中关闭ARC的效果

ios - 无法加载 bundle “CheckoutTests”,因为它已损坏或缺少必要的资源。尝试重新安装 bundle