无法在 iOS 13 上更改 Main.storyboard 的名称 [Xcode 11 GM 种子 2]

Posted

技术标签:

【中文标题】无法在 iOS 13 上更改 Main.storyboard 的名称 [Xcode 11 GM 种子 2]【英文标题】:Cannot change Main.storyboard's name on iOS 13 [Xcode 11 GM seed 2] 【发布时间】:2019-09-19 07:14:59 【问题描述】:

在带有 Xcode 11 GM 种子 2 的 ios 13 模拟器上,应用程序在 Main.storyboard 的名称更改后崩溃(Info.plist 也已更改)。将选项Main Interface 设置为空会导致同样的问题。 iOS 13 系统总是试图找到Main.storyboard,并失败并显示崩溃消息:

*** reason: 'Could not find a storyboard named 'Main' in bundle

在 iOS 12 及更早版本上一切正常。这看起来像是 iOS 13 中的一个错误。

有人遇到同样的问题吗?有什么解决办法吗?

【问题讨论】:

info.plist文件中也改一下 您确定该文件包含在构建中吗? @OrkhanAlikhanov,操作都很好,因为该应用程序运行在 iOS 12 上。 如果您再次重命名为“Main.storyboard”,那么它可以工作了吗? @NiravKotecha,是的。 【参考方案1】:

Swift 5 与 iOS 13

Application 下的 info.plist 文件中需要进行更多更改 场景清单组。

Application Scene Manifest中更改名称。

补充: 如果要在iOS13上创建不带storyboard的根窗口,需要从Info.plist中删除Main storyboard file base nameStoryboard Name项,然后创建窗口以编程方式在SceneDelegate:

class AppDelegate: UIResponder, UIApplicationDelegate 
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool 
        // Override point for customization after application launch.
        if #available(iOS 13.0, *) 
            //Do nothing here
         else 
            window = UIWindow(frame: UIScreen.main.bounds)
            window?.makeKeyAndVisible()
        

        return true
    


class SceneDelegate: UIResponder, UIWindowSceneDelegate 

    var window: UIWindow?

    @available(iOS 13.0, *)
    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) 
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let windowScene = (scene as? UIWindowScene) else  return 
        window = UIWindow(windowScene: windowScene)
        // continue to create view controllers for window
    

    //......

【讨论】:

我尝试更改 both 事件(如this answer所述),但它仍然不起作用:它在@UIApplicationMain 上崩溃。我放弃了 @NicolasMiari,我更新了编程方式的答案,请检查一下。【参考方案2】:

更改Main.storyboard的名称后,将Main storyboard file base nameInfo.plist更改。当然,您可以将其从General-Deployment info-Main Interface更改。

【讨论】:

如您所说的正确操作会出现问题。

以上是关于无法在 iOS 13 上更改 Main.storyboard 的名称 [Xcode 11 GM 种子 2]的主要内容,如果未能解决你的问题,请参考以下文章

无法在 iOS 13 Visual Studio 中更改导航栏外观

更改权限后无法在 Cordova iOS 上使用 Facebook SDK 登录

在 iOS13 上更改状态栏颜色

无法更改 iOS 15 SwiftUI 列表部分标题填充

使用方法调配一次在所有 UIViewController 实例上更改 iOS13 上的 modalPresentationStyle

为深色模式更改 UIDatePicker 选定的日期文本颜色(iOS 13)