UIViewController внутри корневого ViewController не вращается - PullRequest
4 голосов
/ 19 января 2012

У меня есть UIViewController, который я хочу добавить поверх всего приложения в качестве независимого слоя. Поэтому я попытался добавить его в UIWindow, используя [self.window addSubview: viewController.view] в делегате приложения.

Однако, когда пользователь поворачивает устройство, я не получаю событие willRotateToInterfaceOrientation в моем контроллере представления. Поэтому я попытался сделать то, что было предложено здесь : я добавил свой контроллер представления как подпредставление корневого контроллера представления окна в делегате приложения, но моя willRotateToInterfaceOrientation все еще не вызывается.

Что мне делать?

Ответы [ 2 ]

7 голосов
/ 19 января 2012

Ваш rootViewController действует как контроллер представления контейнера.

В iOS 5.0 и более поздних версиях пользовательские подклассы UIViewController теперь могут действовать как контроллеры представления контейнера. Классы UINavigationController и UITabBarController являются примерами контроллеров представления контейнера, предоставляемых UIKit. Идея, лежащая в основе контроллера представления контейнера, заключается в том, что он управляет представлением содержимого из содержащихся в нем контроллеров представления, также известных как его дочерние контроллеры представления. Дочернее содержимое может быть представлено как есть или в сочетании с другими пользовательскими представлениями, управляемыми контроллером представления контейнера.

То, что вы делаете, - это реализация собственной иерархии представлений, поэтому вы несете ответственность за передачу UILifecycle-Events по этой иерархии. iOS> = 5.0 поддерживает создание таких контейнеров viewControllers, предлагая

- (void)addChildViewController:(UIViewController *)childController
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers

методов (и более). Для iOS <5.0, к сожалению, вам придется сделать это вручную. </p>

2 голосов
/ 19 января 2012

В вашем rootViewController вы должны хранить ссылку на ваш independentLayerController и пересылать willRotateToInterfaceOrientation.

Ваш rootViewController будет получать сообщения, и вы можете вызвать willRotateToInterfaceOrientation для independentLayerController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...