I created a simple application using Xcode 7 Beta 2. The application simply contains class MyAppDelegate
, MyViewController
, MyMain.storyBoard
I recently created an app using the Xcode 8 beta but couldn't submit it to the app store using the beta software. I had the same error message: "Launch screens may not set custom classnames" and several other.
My solution: Go to the File Inspector of the Main Storyboard and deselect the Use as Launch Screen option. Simple, right? Hopefully this works for you too.
Here's an image of what to look for
Note that the launch screen is not a fully customizable view controller. You cannot specify a custom class name in the storyboard and expect the system to give you the option to execute code at this stage by calling viewDidLoad. Remember, the app hasn’t launched yet.
Launch Screen Constraints
If you are deploying to iOS 7 you will still need to include the static launch image files. You can include both a launch screen file and static launch images. Devices such as the iPhone 6 running iOS 8 will use the launch screen file whilst iOS 7 devices will fallback to the launch images.
For more details please click here
Go through your View Controllers in Main.storyboard and make sure you don't have one that is both set to a custom class:
and has "Is Initial View Controller" checked:
You can only do one or the other. Somehow I had "Is Initial View Controller" still checked by mistake, and it took me a while to hunt that down!
This is a simple answer, but something I did and didn't even know it. I think with iOS 7, there is now a main.storyboard and a launchscreen.storyboard. I was unwittingly trying to build my initial functional screen on the launch screen.storyboard. That's a no no.
Hope this helps and happy coding!