Pregunta

He creado una subclase UIView y el correspondiente archivo xib donde me he presentado algunas UILabels y UIImageViews. Quiero a continuación, poner múltiples copias de este UIView personalizado en una UIViewController.

Cuando hago que aparecen en blanco en constructor de interfaces y no aparecen cuando se carga la aplicación. ¿Qué métodos necesito para poner en práctica en la subclase UIView para hacer este trabajo?

¿Fue útil?

Solución

El método más fácil, con mucho, es la creación de una punta con el conjunto del propietario del archivo a NSObject, que contiene una vista que contenga el elemento de diseño.

Entonces

NSArray *arr = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:nil options:nil];
UIView *fv = [[arr objectAtIndex:0] retain];

// now you have the view, do something with it:
fv.center = CGPointMake(100,100);
[self.view addSubview:fv];

No hay necesidad de hacer nada con el propietario del archivo; incluso se le asigna nil aquí.

Otros consejos

Esto es similar al uso de un archivo semilla para crear celdas de la vista de tabla. Aquí es una página que explica cómo hacerlo.

Se tendrá que poner un enchufe en su subclase UIViewController para la vista personalizada, y establecer la subclase UIViewController como el "Manual de Archivo" en la vista personalizada plumín de archivo (.xib). A continuación, conecte la salida que ha creado a la vista de objetos de nivel superior (de nuevo en su opinión archivo semilla personalizado).

A continuación, cada vez que desee crear una instancia de la vista personalizada en la vista de código del controlador, llamada:

[[NSBundle mainBundle] loadNibNamed:<custom view nib name> owner:self options:nil];

La salida ha añadido a continuación, se establece en el punto a una nueva instancia de la vista personalizada.

La única desventaja de este enfoque es que usted tendrá que presentar a las instancias de la vista personalizada en su controlador de vista en lugar de mediante programación gráfica en constructor de interfaces.

Otro enfoque sería crear las etiquetas de venta e imágenes mediante programación en la subclase UIView, y luego puedes añadir a Interface Builder como lo haría con cualquier otra subclase UIView.

Editar :. Desafortunadamente en Xcode 4.0, se eliminó esta capacidad

Una vez que haya configurado la subvista en Interface Builder, puede crear un nuevo grupo (utilice el botón de cremallera en la parte inferior de la ventana de la biblioteca) y arrastrar el objeto de subclase (que contiene sus imágenes y etiquetas) de la vista de lista (es decir, no la vista de diseño) de nuevo a la ventana de la biblioteca.

A continuación, puede añadir gráficamente varias instancias de su punto de vista subclase a cualquier vista constructor de interfaces o ventana como lo haría con la incorporada en objetos de la biblioteca.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top