2010-04-18 24 views
7

Tengo una vista personalizada simple que se conecta a través de una toma de corriente a un NIB. Para esta vista particular, hay acciones que me gustaría realizar en la vista cuando se inicializa, sin importar en qué NIB esté.¿Qué método de UIView se llama cuando se crea una instancia de un NIB?

Problema es que ni los métodos de marco (id) init o (id) initWithFrame: (CGRect) se están llamando en la vista personalizada.

¿Qué método se invoca en un UIView cuando se crea una instancia desde un NIB? Solo usaría el controlador de vista y el método viewDidLoad, excepto que esta vista particular aparece en muchos NIB diferentes.

Respuesta

14

Puede usar awakeFromNib para este tipo de inicialización. Los métodos de inicialización regulares se invocan cuando el objeto es realmente creado por IB y luego se archiva usando NSCoding, por lo que nunca se invocan esos métodos dentro de su aplicación. También puede anular initWithCoder: que se llamará, pero no lo recomiendo, ya que otras salidas pueden no estar conectadas en ese punto.

+0

¡Perfecto! Por alguna razón, pensé que awakeFromNib estaba limitado a UIViewController; una vez más, esto demuestra que a veces todo lo que se necesita es un segundo par de ojos :) –

+1

@retailevolved: Sí, cuando se carga un archivo nib, cada objeto en el archivo de punta que es desarchivado (a excepción de los objetos proxy, ya que en realidad no se desarchivan de la punta) se enviará un mensaje awakeFromNib después de que se hayan desarchivado todos los objetos y se hayan cableado todos los puntos de venta. –

Cuestiones relacionadas