¿Cargando UIView personalizado desde la punta, todos los subprocesss contenidos en la punta son nulos?

Tengo un object UIView personalizado con una nib que define el layout de vista / subvista. Mis salidas están conectadas, y cuando inicio el object desde initWithFrame: todo está en order.

El problema que estoy teniendo es cuando estoy usando IB para incrustar UIView en otra punta; aparece la UIView personalizada, pero ninguna de las sublustraciones que contiene aparece; de ​​hecho, sus símbolos se resuelven en nada. Tengo un initWithCoder: muy mínimo initWithCoder: y awakeFromNib: implementación (solo hace un logging) y mi entendimiento es que, a medida que se deserializa la punta, las subidas deberían al less inicializarse durante el process.

La única conclusión a la que estoy llegando por mi count es que una de dos cosas está sucediendo: o mis references de salida son corruptas / malas y no funcionan, o mi comprensión del process load-from-nib es defectuoso y estoy Echando de less algo.

¡Gracias por adelantado!

Editar: (Código publicado para Nekto según lo solicitado … como verás, hace un logging y eso es todo, heh.)

 - (id)initWithCoder:(NSCoder *)aDecoder { if ((self = [super initWithCoder:aDecoder])) { NSLog(@"ThumbnailGridView.initWithCoder frame= %f, %f", self.frame.size.width, self.frame.size.height); } return self; } - (void)awakeFromNib { NSLog(@"ThumbnailGridView:awakeFromNib"); } 

Edición 2: Nibs, controlleres, subviews, etc.

Nibs: Tengo una sola punta que contiene una UIView. Esta UIView contiene una sola UIScrollView, que se rellena con una cuadrícula de UIViews que se definen en otra punta. (Nota: esta parte funciona bien, ya que el relleno se realiza mediante progtwigción y funciona con un initWithFrame: call.) El problema aquí es que el símbolo UIScrollView es nulo después de initWithCoder: y awakeFromNib: ambos se llaman, por lo que los objects solo se agregan a Nada y nada pasa. Si el símbolo de scrollview no era nulo, estoy seguro de que esto funcionaría.

Controladores: hay dos controlleres que utilizan esto, uno se hace con initWithFrame: y funciona perfectamente, el otro lo integra como una reference basada en nib. (Como se menciona en otra parte aquí, definir una UIView en IB, configurando la class personalizada). Pasé el código, y esa vista -is inicializada correctamente- solo sus sub-vistas son "faltantes".

¿Esto ayuda a dar una idea más clara de la situación?

Es posible que no entiendas cómo funciona la carga de nib. Si define una UIView personalizada y crea un file de nib para diseñar sus subvenciones, no puede agregar una UIView a otro file de nib, cambie el nombre de class en IB a su class personalizada y espere que el sistema de carga de nib resuelva. Debe modificar initWithCoder de su class UIView personalizada para cargar mediante progtwigción la punta que define el layout de su subvista. p.ej:

 - (id)initWithCoder:(NSCoder *)aDecoder { if (self = [super initWithCoder:aDecoder]) { [[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil]; [self addSubview:self.toplevelSubView]; } return self; } 

El file de nib de la vista personalizada debe tener la class 'Dueño del file' establecida en su class de vista personalizada y debe tener una salida en su class personalizada llamada 'toplevelSubView' conectada a una vista en su file de nib de vista personalizado que actúa como un contenedor para todas las subvistas. Agregue salidas adicionales a su class de vista y conecte las subvistas al 'propietario del file' (su UIView personalizada).

Como alternativa, simplemente cree su vista personalizada mediante progtwigción y evite IB.

Compruebe que está llamando a la implementación 'super' de initWithCoder: y awakeFromNib en cada uno de sus methods anulados

 - (id)initWithCoder:(NSCoder *)decoder { if ((self = [super initWithCoder:decoder])) { ...your init code... } return self; } - (void)awakeFromNib { [super awakeFromNib]; ...your init code... }