 <p>During the search for an answer i found many people with the same issue. I figured it out myself so here is my solution. I hope it is useful for other people.</p> <p><strong>Step 1.</strong> Create a SplitViewController project. If you have a project already skip this step ;) <img src="https://i.stack.imgur.com/Z5wQg.png" alt="enter image description here"></p> <p><strong>Step 2.</strong> Add two different viewControllers. In this case i call them AbcViewController and XyzViewController. <img src="https://i.stack.imgur.com/Guhk6.png" alt="enter image description here"> <img src="https://i.stack.imgur.com/33ElX.png" alt="enter image description here"></p> <p><strong>Step 3.</strong> Go to the ipad storyboard, remove the DetailViewController from the storyboard. Then add two new viewControllers.</p> <p><img src="https://i.stack.imgur.com/jLZOB.png" alt="enter image description here"></p> <p><strong>Step 4.</strong> Set the class and the Storyboard ID for your viewControllers. <img src="https://i.stack.imgur.com/6nPo4.png" alt="enter image description here"></p> <p><strong>Step 5.</strong> Go to your MasterViewController.h and replace the code with the code below.</p> <pre><code>#import &lt;UIKit/UIKit.h&gt; @class AbcViewController; @class XyzViewController; @interface MasterViewController : UITableViewController @property (strong, nonatomic) AbcViewController *abcViewController; @property (strong, nonatomic) XyzViewController *xyzViewController; @end </code></pre> <p><strong>Step 6.</strong> Now go to your MasterViewController.m file and replace with this code:</p> <p><strong>Note:</strong> If you have an existing project and don't want to replace use the code in step 7.</p> <pre><code>#import "MasterViewController.h" #import "DetailViewController.h" @interface MasterViewController () { NSMutableArray *_objects; } @end @implementation MasterViewController - (void)awakeFromNib { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { self.clearsSelectionOnViewWillAppear = NO; self.preferredContentSize = CGSizeMake(320.0, 600.0); } [super awakeFromNib]; } - (void)viewDidLoad { [super viewDidLoad]; self.detailViewController = (DetailViewController*)[[self.splitViewController.viewControllers lastObject] topViewController]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table View - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 2; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; if (indexPath.row == 0) { cell.textLabel.text = @"ABC"; } if (indexPath.row == 1) { cell.textLabel.text = @"XYZ"; } return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { self.abcViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ABC"]; self.xyzViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"XYZ"]; if (indexPath.row == 0) { NSArray *newVCs = [NSArray arrayWithObjects:[[[self splitViewController ] viewControllers ] firstObject ] , self.abcViewController, nil]; self.splitViewController.viewControllers = newVCs; } if (indexPath.row == 1) { NSArray *newVCs = [NSArray arrayWithObjects:[[[self splitViewController ] viewControllers ] firstObject ] , self.xyzViewController, nil]; self.splitViewController.viewControllers = newVCs; } } @end </code></pre> <p><strong>Step 7.</strong></p> <pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { self.abcViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ABC"]; self.xyzViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"XYZ"]; if (indexPath.row == 0) { NSArray *newVCs = [NSArray arrayWithObjects:[[[self splitViewController ] viewControllers ] firstObject ] , self.abcViewController, nil]; self.splitViewController.viewControllers = newVCs; } if (indexPath.row == 1) { NSArray *newVCs = [NSArray arrayWithObjects:[[[self splitViewController ] viewControllers ] firstObject ] , self.xyzViewController, nil]; self.splitViewController.viewControllers = newVCs; } } </code></pre> <hr> <p>Thats it, run your project and enjoy :)</p>