Как обрабатывать вращение для UIViewController, который не на вершине стека UINavigationController? - PullRequest
2 голосов
/ 25 марта 2011

У меня есть корневой UIViewController (VC1) внутри UINavigationController, который обрабатывает вращение, регулируя его фреймы представлений / подпредставлений вручную в методе willRotateToInterfaceOrientation:.Вращение работает нормально, если корневой UIViewController является активным контроллером представления, в основном на вершине стека.

Проблема возникает, когда я помещаю другой UIViewController (VC2) в NavigationController.Затем я поворачиваю VC2, который работает нормально.Однако, когда я вставляю VC2, проблема заключается в том, что VC1 не повернулся в правильную ориентацию, и при этом его willRotateToInterfaceOrientation: метод не вызывается ??Метод shouldAutorotateToInterfaceOrientation: в VC1 вызывается, но это так.

Мой вопрос заключается в том, как я должен убедиться, что мой UIViewController VC1 обновлен для текущей ориентации для этого типа ситуации ??

1 Ответ

1 голос
/ 25 марта 2011

Я решаю эту проблему, проверяя viewWillAppear:, чтобы увидеть, отличается ли ориентация от того, когда был вызван viewDidDisappear. Если это так, я вызываю код для разметки вида.

Чтобы принять этот подход, прежде всего, код, ответственный за разметку представления на что-то вроде _layoutViews, может просто вызывать его как требуется в viewWillAppear, а также в willRotateToInterfaceOrientation:.

...