PDA

View Full Version : Nested TableViewControllers




RonC
May 10, 2011, 10:56 AM
Maybe I missed something when I learned about TableViewControllers. I'm struggling with a simple concept - nested TableViewControllers - and I'm looking for the right design pattern / idiom for this.

When I say nested, I mean a hierarchy of tables - as an example, consider this:
a first table view is presented with 3 options: A, B, and C. If A is selected, another table view is presented with options a,b, and c; if B is selected, a different table view is presented with options x, y, and z; and if C is selected, yet another table view is prestned with options 1, 2, and 3. This continues through the hierarchy of possible options.

I've coded this up with a whole set of TableViewControllers that get pushed onto the navigation stack (FirstTableViewController, AnotherTableViewController, DifferentTableViewController, and YetAnotherTableViewController) as the various options are selected, but it seems both tedious and sub-optimal. Tedium and sub-optimal are fine when it's limited, but I'm afraid it won't stay that way (and further I expect other apps will follow this same pattern).

I did a quick search through this forum and didn't find anything that seemed to match, so I'm asking. Is there a better design pattern for this or is this the right way to do it?



robbieduncan
May 10, 2011, 11:01 AM
I defined my own protocol that defines how the table is populated with data, and push instances of the same table view controller with different data source objects.

PhoneyDeveloper
May 10, 2011, 11:28 AM
This is sometimes called a drill-down interface.

Obviously UITableViewController does most of the work. It's designed to be data-driven. That is it is very flexible and it displays whatever rows are presented to it.

If you have a drilldown interface it's not that hard to come up with a data model that is hierarchical so that you can display a part of it in the tableview. It also has to be able to contain the information of what is the next set of data to be displayed. So if the user taps row 5 of the second of A, B, C dataset it has to be able to determine from the data what needs to be pushed. If you can design that then you can use one view controller class. You need a single data model that holds all the info.

If you have something to display like Countries, States, Cities the view controller needs to be able to know where it is in that hierarchy so it can pass it to a new instance of the view controller at the next level of the drilldown.

RonC
May 10, 2011, 05:10 PM
Thanks, that's very helpful. I've seen drill down before, it just never clicked that it could be as simple as that.

Sometimes I feel like I'm just a shill for the house...