Interface Builder en iOS: ¿cómo compartir UITabBarController en una aplicación universal?

Si estoy creando una aplicación universal para iPhone / iPad, tengo dos XIB. Un XIB principal para cada tipo de dispositivo. Se supone que la versión para iPad UISplitViewController como controlador raíz, el iPhone a UITabBarController.

Sin embargo, a pesar de la UITabBarController usado en el iPhone es exactamente el que me gustaría usar en el iPad UISplitViewController como controlador maestro.

¿Cuál es la forma mejor / más limpia de lograrlo sin duplicar el UITabBarController? ¿Agrego un tercer XIB que no contiene nada más que el UITabBarController y luego agregarlo programáticamente? ¿O hay una forma más elegante de usar las habilidades de Interface Builder?

preguntado el 27 de agosto de 11 a las 22:08

1 Respuestas

¿Agrego un tercer XIB que no contiene nada más que el UITabBarController y luego agregarlo programáticamente?

Sí, eso es lo que haría. No hay soporte de Interface Builder para algo como esto.

Respondido 28 ago 11, 02:08

Mientras tanto, he probado tu idea. Agrego un XIB que contiene el controlador que quiero compartir. Hago que el propietario del archivo sea mi delegado de la aplicación. Luego agrego una salida al controlador. El problema es: el enchufe siempre es NULO. ¿Podría ser que tenga que cargar manualmente el XIB antes de acceder a su contenido? - Krumelur

@jtbandes: ¿estaría dispuesto a compartir el código / sintaxis para esto? Porque toda mi experimentación al intentar cargar el UITabBarController desde un XIB (que no contiene nada más) no ha dado ningún resultado. [[UITabBarController alloc] initWithNibName: thirdXibFileName bundle: nil] no funciona. También podría aclarar si respondió la pregunta basándose en algo que pensar ¿Debería ser posible o alguna vez ha tenido la oportunidad de hacerlo y ver que funciona? - Pulkitsinghal

@pulkitsinghal: Creo que hacer eso no funcionará a menos que agregue manualmente vistas para el controlador de la barra de pestañas, etc. Creo que lo que estaba preguntando Krumelur era un xib vacío donde arrastra un UITabBarController (esto vendrá con una vista). O simplemente puede crearlo mediante programación. El punto es que, según el dispositivo ("idioma de la interfaz"), desea hacer diferentes cosas con él (configurarlo como controlador de vista raíz o agregarlo a un controlador de vista dividida). Mi respuesta se basó en lo que parecía el mejor método; no es que lo haya hecho, pero no hay razón para que no funcione de esa manera. - jtbandes

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.