2009-12-23 5 views
2

Я пытаюсь создать приложение iPhone, имеющее два подзапроса в главном окне. Каждое представление имеет свой собственный подкласс UIViewController, связанный с ним. Кроме того, в рамках реализации каждого контроллера, я добавил следующий метод:Невозможно управлять ориентацией с несколькими контроллерами просмотра

-(BOOL)shouldAutorotateToInterfaceOrientation: 
(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
    } 

Таким образом, я бы ожидать, оба мнения, реагировать на изменения в ориентации. Однако, это не так. Только первый вид, добавленный в главное окно приложения, соответствует ориентации. (Если я поменяю порядок, в котором будут отображаться мнения, тогда будет реагировать только другое мнение. Иными словами, либо будет работать, но только по одному.)

Почему это? Невозможно ли обрабатывать изменения ориентации более чем одного вида?

Спасибо!

EDIT: Кто-то еще был этот вопрос, поэтому я копируя мое решение здесь:

Я был в состоянии решить эту проблему, предоставляя вид корневой и контроллер представления корня с помощью метода «shouldAutoRotate ... »и добавление моих других представлений в виде представлений в корневом представлении. В подвиды наследуют автоматического вращения поведения, а также связанные с ними вид контроллеры не должны переопределить «shouldAutoRotate ...»

+0

iOS 5 и ниже только! –

ответ

2

Наконец собирается разместить мое решение здесь:

В основном, сводилось к наличию «корень» UIViewController. В этом, у меня есть метод:

-(BOOL)shouldAutorotateToInterfaceOrientation: 
(UIInterfaceOrientation)interfaceOrientation { 
     return YES; 
} 

Я также добавил, мнения, которые я хотел автоматического поворота в качестве подвидов к этому корню UIViewContoller в UIView. Эти объекты также имеют контроллеры просмотра, но делают не override shouldAutorotateToInterfaceOrientation. Фактически, добавление этого метода к этим контроллерам представлений, кажется, не имеет никакого эффекта. Кажется, что работает только обработчик корневого представления shouldAutorotateToInterfaceOrientation, и все подзапросы правильно повернуты.

0

вы можете попытаться реализовать этот метод в классе, который содержит вид вид на оба ваши ViewController в

2

Вам необходимо переопределить метод shouldAutorotateToInterfaceOrientation на всех трех контроллерах, которые у вас есть.

+0

У меня есть только два подкласса UIViewController. Может, в этом и проблема? – Tom

 Смежные вопросы

  • Нет связанных вопросов^_^