Я нашел информацию здесь (и где-либо еще в StackOverFlow по этой теме), и это заставило меня задуматься о моем предыдущем ответе.Это просто утомительно, если у вас много объектов верхнего уровня.
Затем мне пришло в голову, что вы можете создать «вспомогательный» объект, поэтому я создал проект, чтобы продемонстрировать эту технику.По сути, у помощника есть выход для каждого интересующего объекта в представлении.В самом ViewController есть два объекта Helper (один для p, один для l), и вы создаете их в NIB.При изменении ориентации вы переключаете указатель помощника контроллера представления на соответствующий помощник, а затем обновляете self.view.Это действительно просто (этот текст сложнее).
Итак, как бы вы начали?Ну, это помогает, если вы знаете, априори, что вам нужно два отдельных представления.Как только вы это узнаете, возьмите шаблон Helper в ссылочном проекте ниже, адаптируйте его, добавьте в NIB, а затем подключите справку к соответствующим объектам в портретном виде.У самого View Controller есть только ссылка на два помощника и указатель "curHelper".Ивары Helper общедоступны, поэтому View Controller может ссылаться на такие элементы, как "curHelper-> label1.text = ... - стоимость - разыменование одного указателя (можно просто использовать свойства - ваш вызов).
Кроме того, вы можете напрямую подключить IBActions из объектов в любом представлении. Итак, давайте пройдемся по этому:
- создаем NIB
- создаем объект Helper и создаем его в nibпод названием Portrait
- добавьте все IBOutlets к объекту Helper, обработайте затем в dealloc, viewWillUnload
- поместите IBActions как обычные в контроллере вида
- подключите NIB - Helper-> Портретные розетки, действия с контроллером вида
- заставить все это работать в Портрет
- добавить новый объект Helper, назовите его Пейзаж
- дублировать текущий портретный вид, повернутьи сохраните его
- подключите выходы помощника к новому пейзажному виду (действия уже заданы для вас!)
Очевидно, вам нужно отныне использовать макПовторяющиеся изменения, но в любой схеме двойного пера вам придется это делать.В описанном выше методе все имена розеток остаются неизменными.
Контроллеру представления необходимо отправлять «viewDidUnload» обоим помощникам, когда он его получает, и освобождать помощников (которые затем освобождают их розетки).
ПРИМЕЧАНИЕ: я просто собрал это, чтобы посмотреть, как это выглядело.Если вы хотите увидеть код и действительно небольшую демонстрацию, вы можете скачать ее с общедоступного dot me dot com slash dhoerl, в папке iPhone с именем Helpers.zip.Я обновлю это и этот текст, если потребуется.