Estoy haciendo un widget personalizado que me gustaría usar en múltiples plumillas. Así que hago una nueva vista en la pantalla Screen3, agrego algunos botones y ahora quiero mi widget UIAwesomeSauce.¿Cómo obtengo una vista en Interface Builder para cargar una vista personalizada en otro plumín?
Si solo agrego una vista y luego cambio la Identidad de clase, no recibe los subelementos de la plumilla UIAwesomeSauce. Lo mismo si voy a la Biblioteca y cambio a Clases. Parece que solo un UIViewController tiene el campo para "Cargar desde la punta", lo que sería hermoso.
Sé que puedo cargar la semilla UIAwesomeSauce del código, obtener los objetos de nivel superior y colocarla a mano. Pero el objetivo de IB es que no tenga que colocar las cosas en el código. Aún mejor sería si pudiera conseguir que UIAwesomeSauce apareciera en la lista de la Biblioteca.
SOLUCIONADO - por Nimrod - Siga leyendo para EXPLICACIÓN Y CÓDIGO
De todos modos, Dood, que es grande. Puedo hacer mis propias clases de widgets ahora para tonterías. Haz que FileOwner de tu UI finge tu clase, y en ella solo tienes una UIView normal con todas tus cosas. (La vista única en el plumín del artilugio no puede ser la clase en sí, o se obtiene recursivo en initWithCoder.) Luego, en el plumín que desea usar, haga un UIView vainilla y cambie su clase. No podrás ver realmente el widget dentro de ese cuadrado, pero trata.
El uno mismo es ahora una vista en blanco, y tMyActualSelf es la única vista en la que hizo el trabajo en el otro plumín. ¡Hurra!
- (id)initWithCoder:(NSCoder*)coder
{
if ((self = [super initWithCoder:coder]))
{
UIView *tMyActualSelf = nil;
// Initialization code
NSArray *tNibItems = [[NSBundle mainBundle] loadNibNamed:@"UIAwesomeSauce" owner:self options:nil];
for (id object in tNibItems)
{
if ([object isKindOfClass:[UIView class]])
tMyActualSelf = (UIView *)[object retain];
}
if(tMyActualSelf)
{
tMyActualSelf.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
[self addSubview:tMyActualSelf];
}
}
return self;
}
Eso es tan brillante que quiero hornear un pastel. – CBGraham
¡Yay! Finalmente obtuve suficientes puntos para votar en las publicaciones, así que ya está. (Debería poder votar en publicaciones sobre sus propias preguntas, al igual que puede comentar las publicaciones de sus propias preguntas.) – CBGraham
Para cualquier persona (como yo) que escaneó la pregunta y leyó la respuesta en detalle, el asker puso su "SOLUCIONADO" "código como una edición en su pregunta original. –