2012-02-14 8 views
12

intendo fare qualche menu con linguette,ios cambiano visualizzazione secondaria indice runtime

se ho le schede ordinate con indice z, e inserisco ogni scheda con:

insertSubview: (UIView *) atIndex: (NSInteger)

e premendo un pulsante sulla parte superiore di loro voglio cambiare la scheda mostrato, in cima

come posso cambiare l'indice di visualizzazione secondaria in fase di esecuzione?

grazie!

risposta

44

sendSubviewToBack: e bringSubviewToFront: sono i metodi che stai cercando. Un'altra possibilità è exchangeSubviewAtIndex:withSubviewAtIndex: se si desidera scambiare il livello di due viste.

+0

Soluzione giusta compagno. – Resty

15

1.Rimuovere da superview

2.Insert al nuovo indice

[subview removeFromSuperview]; 
[containerView insertSubview:subview atIndex:newIndex]; 
+21

In realtà non c'è bisogno di chiamare '[visualizzazione secondaria removeFromSuperview];'. Le chiamate 'insertSubview: atIndex:', 'insertSubview: aboveSubview:', e 'insertSubview: belowSubview:' elimineranno automaticamente una superview esistente se la sottoview ne ha una. Ecco una citazione dalla documentazione di UIView: "Le viste possono avere solo una superview: se la vista ha già una superview e quella vista non è il ricevitore, questo metodo rimuove la superview precedente prima di rendere al ricevitore la sua nuova superview." –

+0

ovviamente, hai ragione! – cweinberger

3

versioni Swift per una semplice copia incolla:

insertSubview(myView1, belowSubview: myView2) 

insertSubview(myView2, aboveSubview: myView1) 

insertSubview(view: myView1, atIndex: 1) 
Problemi correlati