Xcode: "Scene is unreachable due to lack of entry points" but can't find it

Solution 1:

In your storyboard, select each of the view controller (red arrow in image below) and look at the Storyboard ID field (red oval). None of the Storyboard ID fields should be blank. When you find one that is, that is the culprit.

enter image description here

Solution 2:

While this thread is old, I didn't see an answer describing what worked for me, so here goes...

I had this error and visual examination of the storyboard showed that all of the view controllers appeared to be connected to the root view controller.

I tried naming all 17 of the view controllers in the storyboard (as in @bobnoble's answer). I used a naming convention based on the long name of the view controller, e.g. "jvc" for "Jobs View Controller". When I tried to build, I got an error message pointing to one of the view controllers as having a duplicate name. Tracking things down, I found that I had an actual duplicate of a view controller stacked exactly on top of its twin. I suspect it was cut-and-paste damage from a user interface experiment that I didn't back out completely.

Anyway, deleting the unconnected twin solved my problem. After that, I removed all of the VC names as they're not referenced in the code.

Solution 3:

I just had this exact error with a simple single-scene Storyboard, and all I had to do to fix it was check the "Is Initial View Controller" checkbox for the 1 view controller in the Storyboard. I suspect Xcode used to check this box for you by default in this situation, but no longer does.

Check the box at the bottom

                                     

Check the box for exactly one of the view controllers in your storyboard and you should be good.

Solution 4:

I'm afraid you'll have to go through all 30 of them, and check whether they have a Storyboard ID or a segue to that view controller. One of the two is required, both is also an option.

Solution 5:

This issue can happen in one the following scenarios:

Case I: If none of the scene in the storyboard is marked as "isInitialViewController".

Fix: Identify the root view controller and mark it as "isInitialViewController" in your SB. In this case storyboard id is is not mandatory.

Case II

There can be situations where you do not need to have a initialViewController in a storyboard. For eg: when using Multiple storyboards.

Fix: In such cases make sure the "storyboard id" is correctly given and you refer to the first scene to used in the storyboard using this id. For eg:

UIStoryboard *myStoryBoard = [UIStoryboard storyboardWithName:@"MyStoryBoardName" bundle:nil];
MyViewController *myViewController = (MyViewController *)[myStoryBoard instantiateViewControllerWithIdentifier:@"MyViewControllerId"];

In this case "storyboard id" is mandatory.

Case III

You have your initialViewController connected. But still you get this warning. This is because some of the scenes in the storyboard may not be connected with a "segue" and also they do not have a "storyboard id". Scan your storyboard, see if a "segue" is needed. Connect the segue if that is missing. If a segue is not needed make sure you need to give a "storyboard id" since it is the only way to refer the scene from your code, as shown in the example code above.

Hope this helps