UITableViewController has an initWithStyle method where you pass it the style you want the table view to use, plain or grouped. These means that to create and use my table view controller, somewhere else in the code, possibly in multiple places, I do this:
MyViewController *myViewController = [[MyViewController alloc] initWithStyle: UITableViewStyleGrouped];
[self.navigationController pushViewController: myViewController animated: YES];
[myViewController release];
These seems backwards to me. The classes that use my UITableViewController should not know or care if it used grouped or plain style, that is a concern that the MyViewController should take care of. What's the idiomatic way of dealing with this? Override the init method in MyViewController to call initWithStyle?