The normal way, assuming that your data is all structured similarly (and it sounds like yours is), is to always push the same secondary view controller from your table view controller. Just pass in the data needed to initialize the secondary view controller properly.
Especially in the case you describe, if in view 1 you tap on "Chocolate", you just push a second view with a list of all the chocolate cakes, right? And if you tap on "Cheese" instead, you push a second view with a list of all the cheesecakes? And then, I assume, from the secondary view, if you type on a name of a specific cake, you push a third view that shows the recipe, perhaps a photo, etc. If so, you definitely don't want custom views for each type. And if you did have custom views for each type, that would mean that you can't dynamically define new types at runtime.
Perhaps I'm not reading your description clearly, though.
|