У вас есть контроллер представления, который содержит код выше, правильно вставленный в иерархию контроллера представления?Начните с установки UIWindow.rootViewController
, а затем вызовите addChildViewController:
на каждом контроллере в иерархии.Это то, что мне было необходимо, чтобы при переоборудовании приложения для iOS 4 вызывался механизм пересылки вращения и функция позвоночника.
Редактировать: Я обнаружил, что это еще не все.Apple сделала этот класс довольно сложным в использовании.Проблема в том, что если вы хотите создать UIPageViewController в другое время, чем при первом вызове setViewControllers
.Скорее всего, контроллер, который содержит UIPageViewController, собирается создать его в init
или viewDidLoad
.Но на данный момент истинная ориентация неизвестна, потому что приложения всегда запускаются в портретной ориентации, а затем отправляются уведомления о ротации, если это действительно в альбомной ориентации.Таким образом, в тот момент, когда большинство приложений собираются создать UIPageViewController, они не знают, где должен быть расположен позвоночник.
Примеры вызовов Apple setViewControllers
одновременно с initWithTransitionStyle
.Это работает в тривиальном примере, как в Apple, но большинство приложений, вероятно, будут динамически загружать контент позже.Если вы не установили никаких контроллеров представления, то spineLocationForInterfaceOrientation
не вызывается.
Итак, вы застряли, если вы уже создали UIPageViewController с initWithTransitionStyle
.Вы не можете установить местоположение позвоночника, и вы должны вставить точно правильное количество контроллеров представления для того, как вы инициализировали класс, когда вы не знали истинную ориентацию.Если вы укажете неверное количество контроллеров представления, он ничего не отобразит на экране.
Я вижу два возможных решения:
Всегда вставлять фиктивный UIViewController сразу после вызова initWithTransitionStyle
.Наличие контроллера представления заставит его реагировать на события вращения, и будет вызван spineLocationForInterfaceOrientation
.
Задержка создания UIPageViewController до тех пор, пока вы не будете готовы установить фактическое содержимое иистинная ориентация известна.Это то, что я выбрал.