UISplitViewController en la aplicación universal con Storyboard

Quiero hacer una aplicación que use un UISplitViewControler en el iPad (por lo que entiendo que solo está disponible en el iPad), pero quiero que la aplicación sea universal.

La configuration es así:

Tengo una UITableView (como una vista maestra) y cuando selecciono una fila, debería mostrar una vista detallada de esa celda. Estoy usando un Storyboard y no puedo entender cómo implementar la vista dividida solo para el iPad.

¿Cuál sería la forma más fácil de lograr eso? Gracias.

No necesitas dos storyboards para hacer esto. Puedes usarlos ambos en un solo storyboard. Para el iPhone, normalmente usamos un SWRevealViewController de class (si eres nuevo en la encoding de iOS … :)) para el menu lateral y splitviewcontroller para ipad . También podemos usar SWRevealViewController para ipad también. Depende de su requerimiento.

Para aplicaciones universales, cree viewcontrollers usando Classes de tamaño (usualmente usamos cualquier altura, cualquier ancho para aplicaciones universales).

cambie estas classs de tamaño y cree diferentes controles de vista para ipad y iphones según sea necesario. En la mayoría de los casos, cualquier altura, cualquier ancho, hará el trabajo.

Después de crear viewcontrollers, en appdelegate, utilizando el método instantiateViewcontrollerWithIdentifier , cargue el viewcontroller requerido.

  if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { // The device is an iPad running ios 3.2 or later. } else { // The device is an iPhone or iPod touch. } 

Para ipad cargar el splitviewcontroller. y swrevealviewcontroller para iPhone.

Este es el núcleo básico. Si necesita más información, avíseme.

EDITAR

¿Has visto una flecha en el VC inicial (viewcontroller) en el guión gráfico? Este video se carga primero después de la pantalla de inicio. En mi aplicación, tengo una pantalla de inicio que es común tanto para iPhone como para iPad (usando classs de tamaño como se mencionó anteriormente ) .Así que puedo configurar este vc como el VC inicial. En este caso, no tengo que hacer nada en el appdelegate. Pero si tengo una pantalla de inicio diferente para ipad, puedo hacer una comprobación de condición en el file didFinishLaunchingWithOptions

Puede cargar la pantalla Primera de esta manera. Debería seguir el tutorilal splitVC y el tutorial de controlrevista para configurar el menu lateral. Debe cargar el SWrevealVC o el splitViewcontroller solo si la primera pantalla contiene el menu lateral.

  - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UISplitViewController *split = [storyboard instantiateViewControllerWithIdentifier:@"SplitViewController"]; [AppDelegate setRootController:split storyboard:storyboard actiontype:0]; } else if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; UIViewController *split = [storyboard instantiateViewControllerWithIdentifier:@"SWrevealVC"]; [AppDelegate setRootController:split storyboard:storyboard actiontype:-1]; } return YES; } +(void)setRootController:(UIViewController*)controller storyboard:(UIStoryboard*)storyboard actiontype:(int) actiontype; { if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && actiontype == 0) { UISplitViewController *splitViewController = (UISplitViewController *)controller; //splitViewController.presentsWithGesture = false; UINavigationController *masterNavigationController = [splitViewController.viewControllers objectAtIndex:0]; SideMenuViewController *controller = (SideMenuViewController *)masterNavigationController.topViewController; controller.splitViewController = splitViewController; splitViewController.delegate = (id)controller; } AppDelegate *appDelegate = (AppDelegate *)[[UIApplication shanetworkingApplication] delegate]; [UIView transitionWithView:appDelegate.window duration:0.5 options:UIViewAnimationOptionAllowAnimatedContent animations:^(void) { BOOL oldState = [UIView areAnimationsEnabled]; [UIView setAnimationsEnabled:NO]; appDelegate.window.rootViewController = controller; [UIView setAnimationsEnabled:oldState]; } completion:nil]; } 

El código puede parecer largo, pero tómalo de forma simple. Solo puedes entender la lógica si haces cosas.