Réorganisation des sous-vues UIView

Dans mon application que je suis en train d'essayer d'apporter une sous-vue vers l'avant, puis le remettre à sa couche d'origine. Le code doit être assez simple:

Pour apporter de la sous-vue vers l'avant (à l'intérieur de mon personnalisée UIView classe):

[self.superview bringSubviewToFront:self];

Facile. - Je conserver l'original de la position z dans une variable d'instance nommée, vous l'aurez deviné, zPosition. Donc, la ligne avant -bringSubviewToFront: est:

zPosition = [self.superview.subviews indexOfObject:self];

Donc, tout le code que j'ai utiliser pour mon sous-vue de face est:

zPosition = [self.superview.subviews indexOfObject:self];
[self.superview bringSubviewToFront:self];

Cela fonctionne comme il se doit. Le problème, c'est quand j'ai essayer de mettre la sous-vue arrière, là où il était. Je suis tout simplement faire ceci:

[self.superview exchangeSubviewAtIndex:zPosition withSubviewAtIndex:
    [self.superview.subviews indexOfObject:self]];

L'aide de ce code, si j'ai deux sous-vues, c'est ce qui se passe:

Disons que j'ai vue A et B. vue Vue Un est au-dessus de la vue B. I appuyez sur view B, il s'agit de l'avant. J'appuyez sur view B nouveau (il doit retourner d'où il était), et rien ne se passe, donc il est maintenant sur la vue A. Si je maintenant, appuyez sur afficher l'Un, il s'agit de l'avant, mais quand je me tape encore une fois (donc, il devrait aller de revenir à sa position z: en dessous de la vue B), toutes ses sœurs de vues disparaître!

Personne ne voir ce qui pourrait être à l'origine de ce problème?

source d'informationauteur eric.mitchell