ビューを交換するためにアプリケーション デリゲートを使用しています。最初に現在のビューを削除し、次に新しいビューを追加してから、クォーツ アニメーションを実行します。
最初にどのビューをロードしても、方向の変更は期待どおりに行われます。アプリケーション デリゲートのウィンドウに新しいビューを追加する (古いビューを削除する) とすぐに、方向の変更は発生しなくなります。すべての UIViewControllers に shouldAutorotateToInterfaceOrientation が YES で存在すると仮定します。
クォーツアニメーションを取り出しましたが、まだ行き詰まっているのは次のとおりです。
-(void) showSongList {
[songVC.view removeFromSuperView];
navVC = [[NavigationViewController alloc] initWithNibName:0 bundle:0];
[window addSubView:navVC.view];
[songVC release];
songVC = nil;
}
ビューの切り替えは正常に機能します。最初のビューは常に応答して方向を切り替えます。その後、ビューを追加するウィンドウに加えた変更 (常に前のビューを削除する) により、方向の変更が減少します。
navVC をすぐにロードすると、方向が回転しますが、ボタン イベントからさらに下にある場合、説明した方向の問題が発生します。
NSLog(@"subview count = %d", [[window subviews] count]); //常に 1
didRotateFromInterfaceOrientation で NSLog を使用しようとしましたが、この関数は明らかに方向の変更が発生したときにのみ呼び出されます。
アプリ デリゲート ウィンドウには常にサブビューが 1 つしかないので、迷ってしまいます!