About organizing your view hierarchy, it really depends on if when the user taps one of the main top buttons, it will always go to the first view controller in the new section or if you want to bring him back to the last view in the section where he was.
3.1 Switching sections displays the first view of the new section
Your app's UIWindow
will have a single UINavigationController
on top of the hierarchy. Then each of the 3 top buttons, when tapped, will change the root view controller of the UINavigationController
.
Then, when the user changes section, the current navigation hierarchy is discarded by setting the new section view controller as the UINavigationController
root view controller.
self.navigationController = [sectionFirstViewController]
3.2 Switching sections displays the last displayed view in the new section
This will require a slightly modified version of the above, where your each of your sections will have its own UINavigationController
, so you can always keep a navigation hierarchy per section.
Then, when the user taps one of the top buttons to switch section, instead of changing as previously described, you will change the UIWindow
root view controller to the new section's UINavigationController
.
window.rootViewController = sectionNavigationController