При использовании пользовательского TabBarController не следует вызывать shouldAutorotateToInterfaceOrientation - PullRequest
0 голосов
/ 18 января 2012

Я создал пользовательский TabBarController, который наследуется от UIViewController (НЕ UITabBarController, потому что он не предназначен для создания подклассов).Все работает нормально, кроме поддержки ориентации.

Мой TabBarController установлен как rootViewController в моем UIWindow и содержит внутренний массив UIViewControllers.В моем случае я добавил UINavigationControllers в качестве корня каждой вкладки.

Когда я помещаю новый UIViewController в любой из моих UINavigationController в моем TabBarController, я получаю вызов shouldAutorotateToInterfaceOrientation, все это нормально, здесь я могу установить, какойUIViewController должен поддерживать, какую ориентацию (как описано в документации Apple).

Однако, когда я возвращаюсь назад, нажимая кнопку «Назад» в моем UINavigationBar, я не получаю вызов mustAutorotateToInterfaceOrientation, следовательно, представление, которое мы отображаем, в конечном итоге заканчивается внеправильная ориентация.

Я провел быструю проверку, заменив свой пользовательский TabBarController на UITabBarController, и при нажатии кнопки назад я получаю вызов shouldAutorotateToInterfaceOrientation, поэтому здесь должно быть что-то не так, но я не могу понять, что именно.

Почему я не получаю вызовы shouldAutorotateToInterfaceOrientation?UITabBarController делает что-то, что я пропустил?

Кто-нибудь здесь испытывал такую ​​же проблему?Есть ли у вас какие-либо идеи, которые стоит попробовать, потому что у меня закончились идеи.

РЕДАКТИРОВАТЬ

Эта проблема решается путем добавления каждого UIViewController в TabBarController какдочерний элемент, использующий контроллер представления контейнера iOS5.

Добавьте UIViewController в качестве дочернего элемента с помощью этого метода: addChildViewController. Затем автоматически переопределите ForwardAppearanceAndRotationMethodsToChildViewControllers и верните YES.

Теперь вы должны вызывать yourAbacktateontIntoInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInterInte*

1 Ответ

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

Я видел такие проблемы раньше, и всегда сводился к добавлению -shouldAutorotateToInterfaceOrientation: метода к всем контроллерам представления, а не только к верхнему, как вы могли ожидать. 1006 *

(а если вам лень, просто добавьте категорию к UIViewController)

...