I'm currently working on an iPhone App that uses the UINavigationController as a means for navigating throughout the App. The navigation-stack can go fairly deep, so It's quite a hassle for the user to find his way back entirely to the 'home' screen.

I did some research, but have not found an elegant, de facto standard, pattern for this issues.

Oversimplified example

Let's say for example the storyboard looks like this:

enter image description here

By default a Back-button has the following style, where the label usually displays the title of the former screen:

enter image description here

If the user is 3 levels deep in the application, it would take 3 taps to the back button to get 'home'. What would be a decent solution to give the user the possibility to go to the home screen at once (in developer-terms: pop to the root view controller).

Possibilities I've given some thought:

  • long-press on the back button, but this feels far from intuitive
  • extra 'home' button (with icon), next to the back button.
  • ...

Any thoughts?

  • Show a tree structure in the top below the header bar which scrolls with the content, which provides links back to earlier levels. Then you give the user a good overview also of where they are in the hierarchy. – AndroidHustle Nov 12 '14 at 14:25

Before you settle on a "Home" call to action review your task flows. If you are more than 2 levels deep and can't "cancel" or "back" out to the home screen you may have too deep a hierarchy. Try and do what you can to flatten so that you can utilize "back" or "cancel". "Home" is a non-standard action in mobile. This is a good opportunity for you to dig a little deeper for a solution.


What is the intended task for this workflow? What would be the task for the last page? For example: if the last page is a utility for e.g. configuring, you can provide a button/banner in the content which says "Gets started", "Continue" whatever,... which brings the user back to the entry point of the standard workflow. For example look at the adress book app. When you are deep in the details of a contact (related contacts) you can easily leave due to placing a call etc..

  • Let's say the first screen displays a list of Movies. Selecting a Movie shows it's details and also the list of actors. Selecting an actor shows a list of Movies, he plays in. Selecting a Movie shows it's details and also a list of actors.... etc. The user could end up quite deep in the hierarchy. – fguchelaar Nov 13 '14 at 9:53
  • This sounds as a 2 level hierarchy to me. List of movies (in context of main or actor view) and details of the movie with list of actors. If you want to provide a historical breadcrumb this could lead to an unlimited and unnecessary amount of depth (with possible loops and so on). I would stick to the 2 level solution: if users clicks on a movie s/he sees the actors. A click on a actor shows a list of movies, with the movie where you came from (so you have always a possibility to go back). Same for movie details in context of the actor. Hope this helps – Stefan Wasserbauer Nov 14 '14 at 7:50

The iOS navigation controller is intended for content that is hierarchical by nature, not for free browsing with a back button.

In the example below, I marked all non-hierarchic jumps with a #

List of all movies > movie details > list of actors in that movie # actor details > list of movies he played in # movie details > list of actors ...

Doing such an exercise reveals that you actually have a movie hierarchy and an actor hierarchy. So you can consider movie and actor tabs with navigation within each tab.


You have three options here (listed in order of growing complexity & amount of functionality):

  1. Top navigation in the header/breadcrumbs works fine for monofunctional app with two-level navigation.

enter image description here

  1. Bottom menu for cases with 3-5 main functions or pages

enter image description here

enter image description here

  1. Sidebar that slides from the left on tap by the hamburger icon. For complex apps with many locations, for example, for apps with custom lists created by user (from top of my head for your app: "Favorites" for user's favorited movies, Top rated movies list, various categories: Movies, Shows, Animation etc). Works best for content-rich apps like readers, music libraries, video apps, news apps etc, so should work best for yours. However, if you are on the early stage of development and don't have so many features, you can legitimately consider options posted above.

enter image description here

enter image description here

  • While these are nice examples, they didn't specifically address the OP's question. He is wondering how to provide a way to return to the origin in a linear progression. – mginn May 16 '15 at 17:39

Side bar with a home option.

Reason: when user goes through hierarchical menus he knows what he's doing and he would need to go back in most cases. So having home button anywhere on screen all the time is bad idea as it occupies some unnecessary space.

Only when he finds himself wrong he needs a home which he can open the side bar and tap the option.

Your Answer

