I am working on iOS 7+ for the iPhone.
In a typical iOS app with a Table View Controller, you have the master / detail user experience where one taps on a master-item in the list and you transition to a details-screen of the selected master-item aka item. That's what we're doing in Portrait mode. However...
My requirement that I am working on now is for when we go to Landscape mode and is as follows:
- Presume the user starts with the iPhone in Portrait mode, there is a list of items shown in a table view controller.
- When the user rotates from Portrait mode to Landscape, (launch a new view controller and) show in columns the details of all the items and have the phone be scrollable horizontally and vertically. One column of details per item.
- Alternate the background color of every detail-type so that one can visually compare a detail-type between items. For example Safety Features is a detail type.
How would you implement such? Goal:We want the user to be able to compare the details between items.
Ideas I had were as follows:
- UICollectionView with a layout such that all the column-cells line up in one long row. Synchronize all the vertical scrolls between each cell (hard?).
- PageViewController with ..TransitionStyleScroll - Is that possible? Can I show two columns at a time in a Page View Controller with a ..TransitionStyleScroll and not center on a single page?
- Find existing control on cocoacontrols.com - no luck
- Create one view per item-detail-column and stick views side-by-side inside of one large view controller. This would take care of the scroll-synch issue mentioned above. Problem: These are non-trivial item-detail screens so it would take awhile to do.
I looked at
- https://developer.apple.com/library/ios/documentation/uikit/reference/UIPageViewControllerClassReferenceClassRef/UIPageViewControllerClassReference.html
- several Ray Wenderlich tutorials
- Several posts on blogs
I do not see a straight forward approach that would leap out at me. So, before I dive deep into one path, I am hoping for some guidance on this. Thanks in advance for any insight.