I am building an iPhone app, which will function similarly to many restaurant finder applications. When launched, the application will start with a view that allows a user to specify a zip code for performing a search. Alternatively, if the user has an iPhone with a GPS, the application will automatically perform a search based on their current location, although it will be possible for the user to specify their own location.
After the search has been performed, the user will be presented with a tab bar view, which displays a list of all results, or a map view, containing all of the results within a specified range. Finally, there will be a details view, which gives the user detailed information about any one particular result from the list or map.
The application should flow as follows:
Search -> (list | map) -> details
I'm very new to iPhone development, so I'd appreciate some feedback on how to put together the interface.
What I'm thinking is I could use a navigation view controller for the opening search view. When the user clicks the "Search" button, the app will switch views to a view containing a tab bar controller (one tab for the list and another for the map). Both the list and map views will be placed inside yet another navigation view, which will allow the user to switch to the details view when the user attempts to drill down into the details view.
Does my solution to the problem sound feasible? Is there an alternative way I should consider?
I wouldn't use a tab bar for switching between the map and the list. They basically display the same data, just in a different way. This is usually done with a segmented control in the title bar.
Use one UINavigationController to switch between the 3 main views (Search > (list | map) > details).
Within the (list | map) view, use a UISegmentedControl to switch between viewing modes. When in the details view, users can go back to the search results by using the back button.
Two mockups I came up with quickly:
alt text http://img340.imageshack.us/img340/8913/uimockup.png alt text http://img219.imageshack.us/img219/9553/uimockup2.png