2010-09-22 13 views
11

HI, I have Parentview -> Multiple childviews. quando uso [self bringSubviewToFront: childview] in parentview, funziona bene.ma dopo aver aggiunto grandchildview a childview, quando uso [self bringSubviewToFront: grandchildview] in parentview, non ha funzionato? Qualche aiuto per favore?bringSubviewToFront problema?

risposta

52

Il metodo -[UIView bringSubviewToFront:] funziona solo per i bambini diretti, non per i nipoti. Ricorda che la gerarchia della vista è un albero, e normalmente una vista conosce solo il suo "genitore" (o superview) ei suoi diretti "bambini" (o sottoview). Si avrebbe bisogno di fare qualcosa di simile:

// 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]; 
+2

funzionano bene ... grande codice! –

+0

fare questo ricorsivamente sarebbe anche meglio –

+1

@PizzaiolaGorgonzola Per i livelli di nidificazione arbitrari, sì, un metodo ricorsivo sarebbe la strada da percorrere. Per questo semplice caso sarebbe comunque eccessivo. – DarkDust

0

il mio contributo con la versione rapida dalla soluzione controllato

self.bringSubviewToFront(self.grandchildview.superview!) 
self.grandchildview.superview!.bringSubviewToFront(self.grandchildview)