I have an instance of UIViewController displaying a list of items. When the user selects an item I need to create a new instance of UIViewController (populated by a different list of items) and show it. At the moment I'm calling the constructor from within the didSelectRowAtIndexPath method
RootViewController *rootViewController = [[RootViewController alloc]initWithStyle:UITableViewStylePlain];
UIViewController *targetViewController = rootViewController;
[[self navigationController] pushViewController:targetViewController animated:NO];
But instead of creating a new object it reuses the current one: the new view contains items from the new list as well as from the previous list. So how do I create a new instance of RootViewController from within itself?