2009-05-20 17 views
21

Cuando intento enviar una vista hacia atrás, oculta algunos de los botones y etiquetas en mi controlador de vista. La vista que estoy enviando a la parte posterior es un UIImageView. ¿Alguien tiene una opinión de cuál podría ser el problema?Enviando vista hacia atrás


Aquí está el código que estoy utilizando:

UIImage *image = [UIImage imageNamed: @"background.jpg"]; 
UIImageView *backImage = [[UIImageView alloc] initWithImage: image]; 
[self.view addSubview: backImage]; 
[self.view sendSubviewToBack: backImage]; 

Entonces, cuando estoy añadiendo controles para self.view, que no siempre muestran


Logré roght moviendo mi código de init a loadView. No entiendo por qué eso debería marcar la diferencia, pero bueno ... ¡funciona!

+0

¿Se puede publicar un código de muestra? – pgb

+0

no del todo seguro con lo que quiere decir 'enviar a la espalda' –

Respuesta

17

Si está utilizando el UIViewsendSubviewToBack: o un mensaje similar, probablemente tenga sus botones insertados en la jerarquía bajo UIImageView. Cuando una vista se mueve en la jerarquía, todas sus subvistas se mueven con ella.

Para solucionar esto, debe agregar los controles como subvistas de la misma vista (posiblemente UIWindow) a la que agregó el UIImageView inicialmente.

Sin ver su código, es muy difícil ser más preciso.

0

De acuerdo. No estoy muy seguro de lo que quiere decir con "enviar a la parte de atrás", pero aquí hay una suposición ...

Si está ajustando la estratificación dentro de su vista principal, asegúrese de no enviar una vista "hacia atrás" (cambiando su capa) que tiene un número de subvistas ... o de lo contrario todas irían a la parte de atrás (su estratificación cambiaría) al mismo tiempo.

Si esto no es totalmente lo que usted quiso decir, hágamelo saber y borraré esta respuesta.

1

Al no tener que agregarlo programáticamente y ajustar las vistas, es mucho más fácil aplicar capas a cada una en el constructor de interfaz. Asegúrese de que la vista de la imagen, si está configurada como fondo, asegúrese de que sea la primera en aparecer en la lista.