Я никогда не создавал полный пользовательский интерфейс с использованием набора инструментов пользовательского интерфейса, поэтому у меня нет большого опыта работы с ним. Вот что, я думаю, должно работать.
Каждый UIView, а это UIWindow, имеет свойство subviews
, которое представляет собой массив NSArray, содержащий все подвиды.
Первое вложенное представление, которое вы добавляете к представлению, получит индекс 0, следующее - 1 и так далее. Вы также можете заменить addSubview:
на insertSubview: atIndex:
или insertSubview:aboveSubview:
и такие методы, которые могут определять положение вашего подпредставления в иерархии.
Поэтому проверьте свой код, чтобы увидеть, какое представление вы добавляете первым в свой UIWindow. Это будет 0, другое - 1.
Теперь из одного из ваших вложенных представлений, чтобы перейти к другому, вы должны сделать следующее:
UIView * theOtherView = [[[self superview] subviews] objectAtIndex: 0];
// or using the properties syntax
UIView * theOtherView = [self.superview.subviews objectAtIndex:0];
Сообщите мне, работает ли это в вашем случае!
(под этим маркером мой предыдущий ответ):
Если представлениям необходимо взаимодействовать друг с другом, они должны делать это через контроллер (то есть с использованием популярной модели MVC ).
Когда вы создаете новое представление, вы можете убедиться, что оно регистрируется в контроллере.
Таким образом, методика состоит в том, чтобы убедиться, что ваши представления регистрируются с помощью контроллера (который может хранить их по имени или как угодно в словаре или массиве). Либо вы можете заставить контроллер отправлять вам сообщение, либо вы можете получить ссылку на представление и напрямую общаться с ним.
Если в вашем представлении нет ссылки на контроллер (что может иметь место), вы можете использовать синглтоны и / или методы класса, чтобы получить ссылку на ваш контроллер.