Case 2. You should make navigation controller an initial controller of the app, and main menu should be a root view controller of the navigation controller.
To hide navigation bar use setNavigationBarHidden(_:animated:)
One of the option is to place this hide/show functionality in viewWillAppear/viewWillDisappear methods of menu view controller.
In case 1 you will have to implement yourself back functionality and back-forward animation which will require a lot of code.