Estoy diseñando con IB un botón específico (con algunas etiquetas, y imageView y otras cosas).Usando el objeto xib dentro de otra xib
Me gustaría utilizar ese objeto xib (el botón) en otro xib, donde tengo 6 objetos de ese botón.
Sé que puedo hacerlo programáticamente usando el identificador de clase, pero luego tengo que posicionar mis etiquetas y vista de imagen, y establecer los valores predeterminados y todo lo demás en el código.
Me pregunto si es posible hacer lo mismo con solo el IB? (Por supuesto, aun así, establecer los valores de código, pero quiero posiciones de los lables/imageView y todo lo demás que se establezcan en el xib)
Gracias
Editar
Así , Entiendo que lo que pedí al principio no es posible. Lo que intento ahora es así:
Creé un ButtonTest.xib
. Dentro del Xib tengo una UIView y 3 subvistas (2 etiquetas y un botón). En el inspector configuré la clase UIView en ButtonTest
. Inside ButtonTest.m Tengo 3 salidas para cada una de las subvistas, que conecto en IB.
Siguiente Tengo un ButtonTestViewController.xib
. Dentro de él puse una vista y configuré su clase en el inspector para que sea ButtonTest
. conecto ese punto de vista a una toma de myTextView
dentro de la clase ButtonTestViewController.m
ButtonTest
Ahora, este es el código dentro de ButtonTestViewController.m viewDidLoad:
- (void)viewDidLoad {
[super viewDidLoad];
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"ButtonTest" owner:nil options:nil];
ButtonTest *mainView = (ButtonTest*)[subviewArray objectAtIndex:0];
self.myTextView = mainView;
}
lo que esperaba que iba a pasar, es que la vista en ButtonTestViewController. xib se convertiría en la vista que diseñé en ButtonTest.xib. Esto simplemente no está sucediendo. lo que sucede es que la vista dentro de ButtonTestViewController.xib permanece igual.
Vale la pena mencionar, es que si añado:
[self.view addSubview:mainView];
se le añade el nuevo punto de vista, además de la ya existente.
¿Alguna idea de cómo hacer lo que quiero?
Eventualmente me gustaría tener 6 vistas en ButtonTestViewController.xib
, todas se verían como la plantilla ButtonTest.xib, y los valores de las etiquetas se establecerán en el código.
Edit2
Ok chicos, he hecho todo lo que dijeron y funcionó como un encanto. El único problema que tengo ahora con este problema es cuando la vista en ButtonTestViewController.xib
es un poco más grande que la vista en ButtonTest.xib
. Cuando eso sucede, la etiqueta del botón luce extremadamente borrosa. Cuando ambos son del mismo tamaño, todo está bien.
@ Ned - He utilizado el código exacto que ha escrito en mi método InitWithCoder, salvo que cambié la frase trama a esto:
self.bounds = mainView.frame;
He intentado jugar con el modo de contenido en IB tratando de solucionarlo, a Sin resultado.
Cuando hago utilizarlo como informados, lo que significa:
mainView.frame = self.bounds;
No está funcionando en absoluto, y tamaños de ambos puntos de vista de permanecer igual. Aquí traté de jugar con resizeMask, pero aún así no funcionó.
¿Y la idea de cómo solucionar estos 2 problemas? ¡Gracias chicos!
Datos 3
Me las arreglé para fijar uno de los temas, cambiar el tamaño de la ButtonTestViewController.xib
al tamaño ButtonTest.xib
vista. Esto es lo que hice (utilizando el código para resolver el problema borrosa, tomada de here)
self.bounds = CGRectMake(0, 0, mainView.frame.size.width, mainView.frame.size.height);
CGRect overlay2Frame = self.frame;
overlay2Frame.origin.x = round(overlay2Frame.origin.x);
overlay2Frame.origin.y = round(overlay2Frame.origin.y);
self.frame = overlay2Frame;
El otro problema que no puede resolver. la vista en ButtonTest.xib simplemente no se agrandará para coincidir con la otra vista.
Creo que la OP ha llegado hasta aquí ya. Él está preguntando cómo usar MyView.xib en otros archivos .xib y poder editar completamente la interfaz personalizada. –
Matt tiene razón, aunque edité la pregunta con una nueva pregunta. por favor echa un vistazo. – Idan
He editado mi respuesta para ser un poco más claro. Creo que esto es lo que estás buscando hacer. – Ned