2011-09-30 17 views
20

No sé si esto es posible, pero lo que me gustaría hacer es agregar una subvista varias veces a la vista. He intentado algo como esto:Agregar la misma subvista varias veces para ver

[self.view addSubview: newView]; 
newView.center = CGPointMake(160, 100); 
[self.view addSubview: newView]; 
newView.center = CGPointMake(160, 200); 
[self.view addSubview: newView]; 

Todo esto hace es mover alrededor newView, sin añadir otros nuevos. ¿Algunas ideas?

También probé esto:

[self.view addSubview:newView]; 
UIView *anotherView = newView; 
anotherView.center = CGPointMake(160, 100) 
[self.view addSubview:anotherView]; 

Editar

he aquí una solución que he aprendido con el tiempo

Otra forma de resolver el problema sería hacer una por separado plumilla que contiene la vista y agrega instancias de la punta varias veces. Una buena plantilla para solucionar esta solución es hacerlo de la misma manera que se usa un UITableViewCell personalizado en el método cellForRowAtIndexPath.

+0

Gracias por hacer esta pregunta. ¡Esto respondió indirectamente a uno de los míos! ¡Tiempo ahorrado! ¡WOOHOO! –

Respuesta

39

Una vista solo puede estar contenida en la jerarquía de una vista principal única. Tan pronto como lo agregue a uno nuevo, se eliminará del anterior. En este caso, se eliminará y se volverá a agregar a la jerarquía de la misma vista. Debería hacer una copia de la subvista para que aparezca varias veces.

+0

Acabo de probar su sugerencia (creo) y edité mi publicación. – coder

+1

Acaba de crear un nuevo puntero al mismo objeto UIView. Como UIViews no responde a la copia, tendrá que asignar e iniciar realmente una nueva UIView y personalizarla para que coincida con la primera. Esto puede ayudar al respecto: http://stackoverflow.com/questions/4425939/uiview-can-not-be-copy. –

Cuestiones relacionadas