HI, J'ai parentview -> plusieurs enfants. lorsque j'utilise [self bringSubviewToFront: childview] dans parentview, ça marche bien, mais après avoir ajouté petitchildview à childview, quand j'utilise [self bringSubviewToFront: petitchildview] dans parentview, ça n'a pas fonctionné?Problème bringSubviewToFront?
11
A
Répondre
52
La méthode -[UIView bringSubviewToFront:]
ne fonctionne que pour les enfants directs, pas pour les petits-enfants. Souvenez-vous que la hiérarchie des vues est une arborescence, et normalement une vue ne connaît que son "parent" (ou superview) et ses "enfants" directs (ou sous-vues). Vous devez faire quelque chose comme ceci:
// First, get the view embedding the grandchildview to front.
[self bringSubviewToFront:[grandchildview superview]];
// Now, inside that container view, get the "grandchildview" to front.
[[grandchildview superview] bringSubviewToFront:grandchildview];
0
ma contribution avec la version rapide de la solution vérifiée
self.bringSubviewToFront(self.grandchildview.superview!)
self.grandchildview.superview!.bringSubviewToFront(self.grandchildview)
travail bien ... grand code! –
le faire de manière récursive serait encore mieux –
@PizzaiolaGorgonzola Pour des niveaux d'imbrication arbitraires, oui, une méthode récursive serait la voie à suivre. Pour ce cas simple, ce serait exagéré, cependant. – DarkDust