Tengo una subclase "s" de UIView. Quiero poner algunos botones y etiquetas en s. ¿Cómo asocio mi subclase UIView con un archivo nib?¿Cómo asocio un archivo nib (.xib) con un UIView?
Respuesta
- En Interface Builder, cree un nuevo xib con la plantilla Ver.
- Haga clic en la vista en la lista de objetos en el xib (también debe ver "de propietario del archivo y 'Primera respondedor').
- empuje Cmd-4 para abrir el panel Identidad de la inspector.
- Escriba el nombre de su clase en el campo "nombre de clase" y empuje de retorno.
usted debería ser capaz d trapear botones en. Para obtener la punta del código, use -[NSBundle loadNibNamed:owner:options:]
. Su vista debe ser el primer objeto en la matriz devuelta.
En mi caso, no quería que mi controlador de vista tuviera ningún conocimiento de IBOutlets de .xib de mi vista. Quería que mi subclase view fuera propietaria de IBOutlets. Lamentablemente, UIView no tiene un método initWithNibName:
, así que acabo de crear mi propia categoría.
Aquí es lo que hice:
- En IB, haga clic en su UIView principal, y en el inspector de identidad, establezca la clase a su subclase
- En IB, haga clic sobre el archivo propietario, y en el Identity Inspector, configure la clase en su subclase
- Use su nuevo método de categoría
initWithNibName:
para crear una instancia de su vista.
Y aquí es la categoría que creé:
- (instancetype)initWithNibName:(NSString *)nibName
{
NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:nil];
if (arrayOfViews.count < 1) {
return nil;
}
self = arrayOfViews[0];
return self;
}
Inspirado por this post.
Sin embargo, tenga en cuenta que hasta ahora el marco se ajustará automáticamente, por lo que a diferencia del código en la publicación, aún no he tenido que establecer explícitamente el marco. Además, a diferencia del código de la publicación, necesitaba establecer owner:self
para que IBOutlets se conectara correctamente.
- 1. ¿Cómo cargar un UIView desde un NIB?
- 2. Crear un UIView desde NIB
- 3. Cómo cargar un archivo xib en un UIView
- 4. y cargando archivos NIB/XIB?
- 5. UISplitViewController programáticamente sin nib/xib
- 6. Crear una instancia de una subclase UIView con un delegado, utilizando un archivo NIB
- 7. Cómo duplicar un archivo .xib?
- 8. ¿Cómo crear una vista desde un archivo nib en xcode?
- 9. Convertir NIB en XIB sin Interface Builder
- 10. Convertir archivos NIB a archivos XIB
- 11. ¿Cómo usar un xib y una subclase UIView juntos?
- 12. iOS5 Asignar un .xib a una clase UIView personalizada
- 13. ¿Cómo convertir un proyecto basado en NIB a un Storyboard?
- 14. ¿Cómo recargo un UIView?
- 15. Cómo referenciar archivos XIB de un XIB principal
- 16. ¿Cómo puedo ver el código para los archivos nib/xib?
- 17. ¿Cómo cargar un NIB dentro de una vista en otro NIB?
- 18. Un archivo xib con varios "Propietarios de archivo"
- 19. ¿Cómo heredar un archivo XIB en un proyecto de iOS?
- 20. Cómo cargar un XIB?
- 21. Obligando a Xcode 4 a compilar XIB en NIB
- 22. Cargando .xibs en un UIView
- 23. ¿Cuál es la diferencia entre XIB y NIB?
- 24. Cómo vincular un archivo .xib a un archivo de clase con Xcode 4
- 25. ¿Cómo incrustar una vista de UIViewController desde un xib dentro de una vista en otro xib?
- 26. cómo saber qué archivo xib usa la imagen?
- 27. ¿Cómo se puede usar "First Responder" en un archivo xib?
- 28. iPhone IOS5 Storyboard, ¿cómo cargar un UIViewController con un archivo .xib personalizado?
- 29. Archivos NIB/XIB con programación Cocoa: ¿tiempo de desarrollo más rápido?
- 30. Crear una vista personalizada usando un xib
Estoy tratando de hacer lo mismo: ¿sabe qué nombre de clase debería usar para (a) el UIControllerView padre y (b) la UIView personalizada aquí? He notado en mi código que tengo mi nombre de clase UIView personalizado en ambos, pero eso me da una llamada recursiva a mi método de inicio de UIView personalizado. Es decir, tengo (a) en el UIControllerView padre que utiliza mi vista personalizada, en IB para su XIB, uso un UIView que he establecido el nombre de clase en "clockview", pero luego (b) en mi Uviewiew personalizado de reloj real (no UIControllerView) Archivo XIB He hecho lo mismo y configuré el nombre de la clase para que sea "clockview". – Greg
@Colin ¿De verdad necesitamos configurar el 'Propietario del archivo' en la clase UIView personalizada? No veo ninguna diferencia estableciéndolo en 'UIView' o' myCustomView'. ¿Cuál es el propósito del 'Dueño del archivo' en este caso? – pixelfreak
Quiero poder usar una UIView con una punta en varios lugares. ¿Hay alguna manera de hacerlo sin tener que conectar los IBOutlet todo el tiempo? – jowie