Pregunta

La base en la documentación y código de ejemplo que he atravesado, tengo la impresión de que cuando una clase definida en Xcode se lee en y configurado en el Interface Builder, un objeto basado en la clase se crea y almacena en un xib efectiva o un archivo semilla. Por lo que el objeto está listo para ser utilizado cuando se inicia la aplicación correspondiente.

Por otra parte, para las clases que no han sido manejados por el Interface Builder, código, tales como los "nuevos" declaraciones han de ser escritos en Xcode explícitamente a fin de que los objetos asociados a ser creado y utilizado.

Será muy bueno tener gente que es más eficiente que yo para confirmar o corregir mi muy ingenuo comprensión de Interface Builder ...

¿Fue útil?

Solución

Su interpretación es correcta, pero incompleta. Sí, Interface Builder crea instancias de clases y serializa el rebobinado en la nariz. Sin embargo, esos objetos no están disponibles automáticamente en su código.

Para cada objeto del IB que desea tener acceso a través de Xcode, tiene que declarar una variable de IBOutlet. Ejemplo:

IBOutlet NSWindow* mainWindow;  // A Reference to your main window

Pon este código en el archivo de cabecera de un objeto personalizado que se ejemplariza mediante Interface Builder (arrastrar un objeto genérico a la lista de la clase, a continuación, en la ficha Identidad del inspector, establecer el objeto personalizado a ser una instancia de la clase ). A continuación, haga clic en el objeto personalizado en Interface Builder. Debería ver una entrada para su IBOutlet en la ventana que aparece. Arrastre desde el pequeño círculo que corresponda a (en este ejemplo) de la ventana principal. Ahora tiene una referencia al objeto IB en Xcode.

Es a través de hacer estas conexiones (con IBOutlets para referencias y métodos para IBActions) que define gran parte del comportamiento de su aplicación.

Otros consejos

Los archivos Plumín contienen una copia archivada de un gráfico de objetos; todo lo NSNib o NSBundle necesita saber con el fin de crear nuevas instancias de todos los objetos almacenados en el archivo de la semilla, conectados entre sí como se describe por fijaciones de la punta, y con sus propiedades configuradas con los valores especificados en la punta.

El proceso completo se documenta en El objeto proceso de carga

Los objetos no se crean automáticamente a partir de una semilla, sino que creó en la demanda en respuesta a algún objeto que se carga el archivo semilla. La diferencia es importante porque puede tener una sola carga objeto una punta más de una vez, o tener múltiples objetos cargar el mismo archivo semilla.

Por ejemplo, yo podría crear una punta cuyo "Manual de Archivo" es UIViewController que se une un solo objeto UIView a la propiedad 'vista' del propietario del archivo. entonces podría tener dos subclases UIViewController diferentes (o dos instancias del mismo UIViewController subclase) de carga ese mismo archivo semilla a cada obtener su propia copia de la UIView. Del mismo modo que podría cargar una nueva UITableViewCell de una punta cada vez que necesito una nueva celda de una tabla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top