the not for compliant coding iphone ipad xcode4 xib

iphone - not - main storyboard xcode



Cómo vincular un archivo.xib a un archivo de clase con Xcode 4 (4)

Desea crear una nueva subclase UIViewController, no un nuevo archivo UI. Eso creará su .xib así como los archivos de clase (.m y .h). La plantilla está en Cocoa Touch.

Querer un enlace a un controlador de vista existente probablemente no sea una buena idea. Si sigue el patrón de diseño MVC (Modelo-Vista-Controlador), tiene sus clases de datos y controladores de vista separados. Si puede, saque las cosas de su clase MainViewController a una clase de datos de su propiedad. Luego, cree otro controlador de vista para iPad y conviértalo en propietario de una instancia de su clase de datos que creó.

han comenzado un proyecto universal bajo el nuevo Xcode4. Mi aplicación funciona en dispositivos iPhone y iPad pero no está bien diseñada para el iPad. Tengo 2 archivos .xib para MainWindow: MainWindow.xib (dispositivo iPhone) y MainWindow-Ipad.xib (dispositivo iPad). Pero solo un archivo .xib para mi MainView: MainView.xib.

Así que estoy tratando de crear un archivo .xib específico para el dispositivo iPad:

Nuevo archivo> Interfaz de usuario> Ver -> siguiente -> familia de dispositivos: iPad -> MainView-iPad.xib -> guardar

Y, por supuesto, no hay nada conectado, ni toma de referencia, ni enlace a ninguna clase.

¡Reviso cada miniatura de mi nuevo MainView-iPad.xib para vincularlo a mi clase de MainViewController sin éxito!

¿Dónde o cómo puedo vincularlo a mi clase MainViewController? Gracias por adelantado.


La respuesta correcta fue dada por user763308:

Para vincular un .xib a una clase en Xcode4:

  1. Abra su .xib.
  2. En marcador de posición: seleccione Propietario del archivo.
  3. En la tercera miniatura: "Inspector de identidad" del panel derecho, edite el campo "Clase personalizada" e ingrese el nombre de su clase.

También tuve que:

  1. Haga clic en la vista raíz debajo de Objetos.
  2. Haga clic en la última pestaña: "Mostrar conexiones".
  3. Arrastre "Nuevo punto de referencia" a "Propietario del archivo" y seleccione "ver".

No es necesariamente incorrecto tener una proporción de 2: 1 de .xib a clase de controlador en el caso de una aplicación universal. Este es el patrón que sigo:

Usted tiene su clase MainViewController. Tienes 2 archivos .xib: MainView-iPhone.xib y MainView-iPad.xib. Ambos archivos tienen su salida "Propietario del archivo" establecida en MainViewController. Ahora, para garantizar que el controlador de vista realmente cargue la interfaz correcta y conecte todas las salidas correctas dependiendo del dispositivo en el que se ejecuta la aplicación, haré algo como lo siguiente:

MainViewController* controller = nil; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { controller = [[MainViewController alloc]initWithNibName:@"MainView-iPad" bundle:[NSBundle mainBundle]]; } else { controller = [[MainViewController alloc] initWithNibName:@"MainView-iPhone" bundle:[NSBundle mainBundle]]; } /* Present the controller */

Ahora, también debería decir que esta es solo una buena idea si no hay demasiadas rutas de código distintas que deban seguirse cuando se ejecuten en diferentes dispositivos. Si el comportamiento del controlador es más especializado cuando se ejecuta en un iPad frente a un iPhone, es una mejor idea abstraer el comportamiento común en MainViewController y luego escribir dos subclases: MainViewController_iPhone y MainViewController_iPad. Cada subclase carga el archivo .xib apropiado y maneja todos los detalles internamente. En este caso, el código anterior se vería más como:

MainViewController* controller = nil; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { controller = [[MainViewController_iPad alloc] init]; } else { controller = [[MainViewController_iPhone alloc] init]; } /* Present the controller */


Para vincular .xib al archivo de clase, puede hacer los siguientes pasos:

1) ve a la vista lateral derecha. 2) haz clic en el tercer botón y en el que tienes una fila preguntando sobre la clase personalizada, simplemente escribe el nombre del archivo de la clase y quieres que se vincule.

para crear los puntos de referencia: -

1) Puede copiar todas las salidas del iPhone .xib y pegarlas aquí y luego arrastrar todas las salidas al propietario del archivo y luego conectarlas.