Я использую мой делегат приложения для обмена представлениями. Сначала я удаляю текущий вид, затем добавляю новый вид, затем запускаю кварцевую анимацию.
Независимо от того, какой вид я загружаю первым, изменения ориентации происходят, как и ожидалось. Как только я начинаю добавлять новые виды (удаляя старые) в окно в делегате приложения, изменения ориентации больше не происходят. Предположим, что mustAutorotateToInterfaceOrientation присутствует с YES во всех моих UIViewControllers.
Я вынул кварцевую анимацию, и вот где я все еще застрял:
-(void) showSongList {
[songVC.view removeFromSuperView];
navVC = [[NavigationViewController alloc] initWithNibName:0 bundle:0];
[window addSubView:navVC.view];
[songVC release];
songVC = nil;
}
Переключатель просмотров работает нормально. Первый вид всегда реагирует и переключает ориентацию, затем любые изменения, которые я делаю в окне добавления видов (всегда удаляя предыдущий), уменьшают изменения ориентации.
Если я сразу загрузлю navVC, он будет поворачивать ориентацию, но когда он будет дальше по линии от события кнопки, я получу описанную проблему с ориентацией.
NSLog (@ "счетчик просмотров =% d", [[количество просмотров окон]]); // всегда 1
Я попытался использовать NSLog в didRotateFromInterfaceOrientation, и эта функция, очевидно, вызывается только при изменении ориентации.
В моем окне делегата приложения всегда есть только одно подпредставление, так что я заблудился!