2010-04-05 22 views
19

Cada vez que intento presentar un UISplitViewController modalmente la aplicación falla. Por lo tanto, debe ser siempre el controlador de vista raíz. ¿Alguien puede confirmar eso?Controlador de vista dividida debe ser controlador de vista raíz

+0

Solo como referencia, creo que este es el camino a seguir: Ver pregunta similar: http://stackoverflow.com/a/19983002/1134595 –

Respuesta

20

Desde el Apple iPad Programming Guide:

vista del controlador de vista dividida debe instalarse siempre que la vista raíz de la ventana de la aplicación. Usted nunca debe presentar una vista dividida dentro de una barra de navegación o tabulación interfaz.

Así que sí, no puede presentar una vista dividida fuera de la ventana principal de la aplicación (eso incluye de manera modal).

EDITAR

El enlace a la documentación anterior ya no trata este tema. discusión relevante ahora se puede encontrar en Apple View Controller Catalog for iOS, que establece lo siguiente: controlador de vista

Una fracción debe ser siempre la raíz de cualquier interfaz que cree. En otras palabras, siempre debe instalar la vista desde un objeto UISplitViewController como vista raíz de la ventana de su aplicación. [...] Los controladores de vista dividida no se pueden presentar de forma modal.

+0

¿lo ha probado? Dice "debería" no "debe". Y presentar una vista dividida modalmente en modo pantalla completa es si está dentro de una interfaz de navegación o de barra de pestañas. Eso no indica que no sería posible en general. – user309305

+1

No he probado esto por mi cuenta, pero dado que Apple recomienda no hacerlo, y que tiene problemas con él, probablemente sería una mejor idea repensar su diseño. Si desea una configuración de tipo de vista dividida, sería sencillo crear su propia configuración de "vista dividida" (en lugar de UISplitViewController) en Interface Builder y presentarla de manera modal. – indragie

+0

buena idea. ¡Gracias! – user309305

2

Por supuesto, puede usar UISplitViewController sin usarlo como controlador de vista raíz. En mi proyecto, lo uso como esto:

  1. mostrar mi propia viewcontroller en el método modal:
 
[self presentModalViewController:mainViewController animated:YES]; 
  1. En el mainViewController, tengo
 
UISplitViewController *splitViewController; 

y en - (void)viewDidLoad, configure splitViewController.view a mainViewController.view

splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil]; 
self.view = splitViewController.view; 
+0

De esta forma, no recibirá mensajes del delegado del controlador Split View. – pt2ph8

1

El UISplitController puede instalarse bajo UITabBarController. Lo hago. Simplemente use la búsqueda en este foro: encontré al menos una buena muestra de software.

3

Tengo el mismo problema con el mismo error cuando traté de segue desde un controlador de vista de contenido normal (es decir, no hay problema desde un controlador de pestañas o un controlador de navegación).

Afortunadamente, encontré una forma de eludir esto insertando un controlador de navegación entre el VC y el controlador de vista dividida. En otras palabras, pase del VC a un controlador de navegación, luego trace una conexión de relación entre el controlador de navegación y el controlador de vista dividida. De esta forma, la instancia de una vista dividida todavía no requiere codificación.

+0

Encontré que en esta solución, dentro de un Storyboard, la transición del VC al controlador de navegación debería ser una transición modal. – ghr

0

Sí Exactamente tendrá que usar RootViewController y debería ser heredado de UITableViewController.Puede echar un vistazo a este tutorial

Cuestiones relacionadas