Launch screens may not set custom classnames Launch screens may not set custom classnames xcode xcode

Launch screens may not set custom classnames


Go to the properties of your Main.storyboard and check that Use as Launch Screen isn't selected. It sounds like you have selected it by mistake.

enter image description here


iOS 13 note:

Prior to iOS 13, you had both:

  • Main.storyboard
  • LaunchScreen.storyboard

Starting from iOS 13 by default you have SwiftUI. As a result you no longer have the Main.storyboard. You only have LaunchScreen.storyboard.

As for their differences see here

And perhaps like me, you just saw the word storyboard and jumped right at it and later realized you're not building against Main.storyboard.

The fix is simple and is mentioned in Paulw11 answer

Why that has happened?

It's because SwiftUI has somewhat deprecated the need of storyboards and tends to put focus on using previews as a single source of truth.


If you still want to work with the storyboard then what you have to do is upon creating the project set the 'User Interface' to 'Storyboard':

enter image description here


I always have a separate splash screen which is the first view controller app loads.Splash Screen Storyboard

This is the file where you want to add all the business logical or display spinner / loader etc.

For this to work you have to setup Deployment target of your project as shown.Target Deployment info

Note that you can not add any other custom class to LaunchScreen. It is an ViewController to just show while app is about to start. In this phase of app life cycle nothing has yet been started. Its almost similar to static image ( It used to be only static image till iOS7 ). Starting for iOS9 or XCode 7 only it was changed to storyboard previously it used to be XIB file. Hence you can not add custom class objects to LaunchScreen as this is a phase where app is still to be loaded or started.