2011-12-04 24 views
58

Cuando la vista se carga manualmente, el desarrollador conserva el control cuando se trata de inicializaciones, elegimos qué inicializador llamar, qué variables establecer, etc.¿Cómo se inicializa la vista cuando se carga a través de un guión gráfico?

Cuando la vista se carga desde el guión gráfico ... ¿qué sucede con eso? inicializador? ¿Dónde deberían establecerse las variables? Me gustaría estar disponible una vez que se haya cargado la vista.

Por favor, ayúdame a entender la secuencia aquí. ¿Cómo se crea la instancia de la clase aquí, quién la crea y cómo podemos intervenir y ayudar a configurarla a nuestro gusto?

Respuesta

89

Cuando se carga una vista desde una punta o guión gráfico, se llama al método -initWithCoder:. Al igual que -initWithFrame:, -initWithCoder: es un inicializador designado para UIView. Si vas a hacer una inicialización personalizada para una subclase de UIView, debes asegurarte de que suceda para ambos métodos. Una técnica común es agregar un método de inicialización común al que llame desde -initWithFrame: y -initWithCoder:. Ver my answer a Custom view and implementing init method? para una descripción más detallada.

Tenga en cuenta que la documentación de -initWithFrame: explica:

Si utiliza Interface Builder para diseñar su interfaz, este método se llama cuando no sus objetos de vista son posteriormente cargados desde el archivo semilla . Los objetos en un archivo de punta son reconstituidos y luego inicializados usando su método initWithCoder: que modifica los atributos de la vista para que coincida con los atributos almacenados en el archivo de punta.

Cuestiones relacionadas