@macworth as Jack said it is possible but I'm not sure if you can do it from code. I also had a problem (getting the same "only supported when running under UIUserInterfaceIdiomPad" exception) when using a storyboard, however. After much nashing of teeth I figured out it was because I was using an old xcode imported project and did not have Use Sizes Classes checkbox enabled for the storyboard. After enabling that, xcode upgraded the project, and it worked fine.
I also had to make some tweaks to handle cases where a nav controller is used instead of a split view controller. In particular, in the default xcode split view controller project I had to make the following #if 1'd change to prepareForSeque():
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSDate *object = self.objects[indexPath.row];
#if 1
DetailViewController *controller = nil;
if ([segue.destinationViewController isKindOfClass:[UINavigationController class]]) {
controller = (DetailViewController*)[segue.destinationViewController topViewController];
}
else if ([controller isKindOfClass:[UISplitViewController class]]) {
controller = segue.destinationViewController;
}
#else
DetailViewController *controller = (DetailViewController*)[[segue destinationViewController] topViewController];
#endif
[controller setDetailItem:object];
controller.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem;
controller.navigationItem.leftItemsSupplementBackButton = YES;
}
}