2010-05-09 21 views
12

No pude encontrar una buena respuesta en ninguna parte para esto. Estoy usando un UINavigationController para mi aplicación de iPhone, con todo se genera mediante programación, nada en Interface Builder. Estoy tratando de portar mi aplicación al iPad, utilizando un UISplitViewController y mi UINavigationController existente, pero no estoy seguro de dónde debería tener la lógica de mi programa separando los controladores de vista para iPhone o iPad.¿Cómo puedo hacer una aplicación universal de iPhone/iPad que usa programáticamente UISplitViewController y UINavigationController?

¿Configuro mi archivo principal para usar un delegado de aplicación diferente o utilizo el mismo delegado de aplicación y configuro la interfaz de usuario de manera condicional?

Además de esto, cada vez que trato de compilar mi aplicación en el simulador, no reconoce el UISplitViewController o incluso la condición en la que verifico si la clase existe.

¿Puede agradar a alguien ponerme en la dirección correcta, recordando que no estoy usando xibs?

Respuesta

20

Si desea ver un ejemplo de una interfaz completamente programática de iPhone/iPad que utiliza una vista dividida, puede descargar el código fuente de mi aplicación Molecules.

Dentro de esa aplicación, utilizo un delegado de aplicación, pero configuré la interfaz de manera diferente dependiendo de la lengua de interfaz de usuario presente (iPad o iPhone). Para el iPhone, instalé un controlador de vista raíz que administra la interfaz apropiada para ese dispositivo. Para el iPad, primero creo un UISplitViewController y lo adjunto a la ventana raíz, luego creo mi controlador de vista raíz específico del iPad y lo coloco como la vista de detalle del controlador de vista dividida (con un controlador de navegación que utilizo para la selección de elementos como el controlador izquierdo para la vista dividida).

De nuevo, recomiendo consultar el proyecto de aplicación para ver cómo configuro esto programáticamente. El código está disponible bajo una licencia BSD, por lo que puede copiar y pegar esto en su propia aplicación si lo desea.

En cuanto a los errores de compilación que está obteniendo, deberá migrar el destino de la aplicación para que sea una aplicación universal utilizando la opción de menú "Actualizar destino actual para iPad". Una vez que se haya completado, configure su SDK de compilación en 3.2. Vaya a la configuración de compilación de su aplicación y establezca su Destino de implementación en el sistema operativo más antiguo que desee admitir con su aplicación (con 3.0 como el más lejano posible).

Por último, tendrá que debilitar el enlace UIKit. Para saber cómo hacerlo, vea mi respuesta here. La vinculación débil de frameworks ya no es necesaria si está compilando usando iOS SD 4.2 o posterior SDK. Simplemente compruebe la presencia de las clases apropiadas en tiempo de ejecución al ver si su método +class devuelve nil.

+0

Muchas gracias, el código fuente de las moléculas realmente me ayudó a entender todo. Estoy usando la vista lateral de la vista dividida para mi vista de tabla que comparte mi vista de tabla existente con la aplicación iphone y la vista detallada de la vista dividida consiste ahora en otras dos vistas y se utiliza para que el control de navegación pueda acceder a ellas. por cierto, me encanta ver pi en cubos en el ipad. –

+0

También utilicé [[UIApplication sharedApplication] .delegate performSelector: @selector (PushMyViewController)]; para presionar un ViewController en mi vista derecha ... ¿es bueno o malo? Me preocupa que algo horrible pueda suceder más tarde lol –

+0

¡Gracias por proporcionarnos la fuente de Moléculas! Cuando construyo con Active SDK = Simulator 3.2, puedo ejecutar el simulador de iPad. Pero, ¿cómo se puede probar esta aplicación con el simulador en el modo iPhone? Cuando intento configurar Active SDK = Simulator 3.1.3, obtengo varios errores de compilación (p. Ej., No puedo encontrar la declaración del protocolo UISplitViewControllerDelegate).¿Qué estoy haciendo mal? ¡Gracias! –

Cuestiones relacionadas