В моем приложении я пытаюсь подключить subview к фронту, а затем верну его обратно к исходной позиции слоя позже. Код должен быть довольно простым:
Чтобы переместить subview на передний план (внутри моего пользовательского класса UIView):
[self.superview bringSubviewToFront:self];
Легко. Я сохраняю исходную позицию z в переменной экземпляра, которую вы предположили, zPosition
. Итак, строка до -bringSubviewToFront:
:
zPosition = [self.superview.subviews indexOfObject:self];
Итак, весь код, который я использую для вывода моего подпрограммы на передний план, это:
zPosition = [self.superview.subviews indexOfObject:self];
[self.superview bringSubviewToFront:self];
Это работает так, как должно. Проблема в том, что я пытаюсь вернуть subview туда, где он был. Я просто делаю это:
[self.superview exchangeSubviewAtIndex:zPosition withSubviewAtIndex:
[self.superview.subviews indexOfObject:self]];
Используя этот код, если у меня есть два подзаголовка, вот что происходит:
Скажем, у меня есть вид A и вид B. Вид A выше вида B. Я смотрю на B, он выходит на передний план. Я снова нажимаю вид B (он должен вернуться туда, где он был), и ничего не происходит, поэтому теперь он отображается на A. Если я сейчас коснусь вида A, он выходит на передний план, но когда я снова нажимаю его (поэтому он должен вернитесь в исходное положение z: ниже вида B), все его взгляды сестры исчезают!
Кто-нибудь видит, что может вызвать эту проблему?