Cannot change Main.storyboard's name on iOS 13 [Xcode 11 GM seed 2]
Asked Answered
I

3

7

On iOS 13 simulator with Xcode 11 GM seed 2, the app crashes after Main.storyboard's name changed (Info.plist changed also). Setting option Main Interface to empty cause the same problem. The iOS 13 system always try to find the Main.storyboard, and failed with crashing message:

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

Everything is fine on iOS 12 and earlier versions. It looks like a bug in iOS 13.

Does anyone meet same problem? And any solutions?

Indiscrimination answered 19/9, 2019 at 7:14 Comment(5)
Change it in info.plist file tooLussier
Are you sure the file is included in the build?Lussier
@OrkhanAlikhanov, the operations are all good, because the app is running on iOS 12.Indiscrimination
if you again rename to "Main.storyboard" then it's working ?Ardel
@NiravKotecha, yes.Indiscrimination
C
22

Swift 5 with iOS 13

One more changes require in info.plist file under Application Scene Manifest group.

enter image description here

Change name in Application Scene Manifest also.

Additional:
If you want to create the root window without a storyboard on iOS13, you need removing the Main storyboard file base name and Storyboard Name item from Info.plist, and then create the window programmatically in 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
    }

    //......
}
Carmelacarmelia answered 19/9, 2019 at 8:30 Comment(2)
I tried changing both occurrencies (as this answer says) but it still doesn' work: it crashes on @UIApplicationMain. I give upExpiable
@NicolasMiari, I updated the answer for programmatical way, please check it.Indiscrimination
P
0

Change the Main storyboard file base name from Info.plist after you changed the name of Main.storyboard.And of course,you can change it from General-Deployment info-Main Interface.

Polygynist answered 19/9, 2019 at 8:4 Comment(1)
The problem occurs with the right operations as you mentioned.Indiscrimination
T
0

Xcode rename Main.storyboard

Just rename UISceneStoryboardFile string to a correct one in Info.plist file

Tother answered 14/8, 2023 at 13:22 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.