W mojej aplikacji próbuję przenieść widok z przodu do przodu, a następnie umieścić go z powrotem do pierwotnej pozycji warstwy później. Kod powinien być dość prosty:Zmiana kolejności UIView subviews
Aby wnieść podrzędny do przodu (w moim niestandardowej klasy UIView):
[self.superview bringSubviewToFront:self];
łatwe. Przechowuję oryginalną pozycję z w zmiennej instancji o nazwie, zgadłeś, zPosition
. Tak więc, zanim -bringSubviewToFront:
linia jest:
zPosition = [self.superview.subviews indexOfObject:self];
tak, cały kod używam przynieść mój podrzędny do przodu jest:
zPosition = [self.superview.subviews indexOfObject:self];
[self.superview bringSubviewToFront:self];
To działa tak jak powinno. Problem polega na tym, że próbuję umieścić subview z powrotem tam, gdzie był. Jestem po prostu w ten sposób:
[self.superview exchangeSubviewAtIndex:zPosition withSubviewAtIndex:
[self.superview.subviews indexOfObject:self]];
Używając tego kodu, jeśli mam dwie subviews, to co się dzieje:
Powiedzmy mam przejrzeć i zobaczyć B. Widok A jest powyżej widoku B. Widzę widok B, dochodzi do przodu. Stukam ponownie w widok B (powinien powrócić do miejsca, w którym był), i nic się nie dzieje, więc jest teraz w widoku A. Jeśli teraz dotknę widoku A, pojawi się on z przodu, ale kiedy dotknę go ponownie (tak powinno być powrócić do pierwotnej pozycji z: poniżej widoku B), wszystkie jego widoki z rodzeństwa znikają!
Czy ktoś widzi przyczynę tego problemu?
Może zacząć od manekina, pustej podrzędny na górze. Potem wymieniasz się z tym podglądem. Nie najbardziej eleganckie, wiem ... –