1

ビューを交換するためにアプリケーション デリゲートを使用しています。最初に現在のビューを削除し、次に新しいビューを追加してから、クォーツ アニメーションを実行します。

最初にどのビューをロードしても、方向の変更は期待どおりに行われます。アプリケーション デリゲートのウィンドウに新しいビューを追加する (古いビューを削除する) とすぐに、方向の変更は発生しなくなります。すべての 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 つしかないので、迷ってしまいます!

4

1 に答える 1

1

OK、それで何をすべきかがわかりました... SwapViewController という UIViewController を作成し、それに他のビューを追加しました。

私が最初に試したとき、これはうまくいかないと思った. しかし、UIViewController に方向機能があることを考えると、View Controller が必要だったと思います。

したがって、1 つのスワップ ビュー コントローラーを作成し、それにサブビューを追加します。

于 2010-02-24T20:38:36.260 に答える