Why Are Back Buttons Missing & Views Being Presented Modally Despite Being Embedded In A Navigation Controller?
You seem to have your storyboard entry point set to the initial view controller, instead of the navigation controller. This makes the navigation controller pretty much useless, which is why things are still being presented modally. There is a small arrow in your second picture pointing to your initial view controller (the screen with the "sign up" and "log in" buttons). It looks like this:
This is the storyboard entry point.
It should be on the navigation controller instead of the initial view controller. You can do one of the following to fix the problem:
Drag and drop the arrow to the left of the navigation controller.
OR
Select the navigation controller, and in the attributes inspector, check "Is Initial View Controller".
Build and run and you should be good to go.
I saw what you said about how in the storyboard it shows the back buttons, and here's why I think that is so, but not in the simulator:
Xcode Storyboard probably thinks that since the view is embedded in the navigation controller, the navigation controller will be loaded, so it is showing what would happen if the navigation controller was actually loaded. But since the storyboard entry point skips right over the navigation controller, the navigation controller is never loaded during the run.
Prevent iOS app from loading default Storyboard entry point
The problem is merely that the tutorial you're looking at is too old for current conditions. There is no Single View App template any more, and the App Delegate no longer contains the window. If you create a project in Xcode 11 or Xcode 12, the window is owned by the scene delegate. Implement the scene delegate's willConnect
method to do the work that the app delegate was doing in the tutorial, and everything will spring to life.
Also the mechanism for preventing Main.storyboard from trying to load automatically has changed; you have to remove it from Application Scene Manifest in the Info.plist (editing by hand — there is no simple interface).
Xcode: Scene is unreachable due to lack of entry points but can't find it
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.
WatchKit how to specify main entry point in storyboard?
Solved it. Need to check the 'Is Initial Controller' from within the Interface Controller's attributes inspector.
Related Topics
Change What Print(Object) Displays in Swift 2.0
Swift 2.0, Alamofire: Set Cookies in Http Post Request
Create Instance of Class Known at Runtime in Swift
How to Pass Structure by Reference
Swift Set Delegate to Self Gives Exc_Bad_Access
Swift Await/Async - How to Wait Synchronously for an Async Task to Complete
Add an Extension/Method to All Objects in Swift
Skaction Runaction Does Not Execute Completion Block
Mock Third Party Classes (Firebase) in Swift
How to "Append" to an Immutable Dictionary in Swift
Swift Generics: Cannot Convert Value of Type to Expected Argument Type
Sorting Nil Dates to the End of an Array
Creating Gif Image Color Maps in iOS 11
Executefetchrequest Doesn't Return the Nsmanagedobject Subclass
"An Error Occurred While Accessing the Keychain" When Signing in Using Firebase