2011-06-22 21 views
0

私は2つのUIViewControllerをアプリケーションに持っています。私はそれらの間のビューを切り替えます。一つは隠され、他は隠されていない。オリエンテーションの問題以外はすべてうまくいく。両方のUIViewController では、私はこの方法UIView回転問題

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return ((interfaceOrientation == UIInterfaceOrientationLandscapeRight)|| 
     (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)); 
    //return YES; 
} 

との両方XIBファイル内の景観に向きを設定を上書きします。 *** Delegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
{ 
    ....... 
    viewController.view.hidden=TRUE; 

    [self.window addSubview:viewController.view]; 

    [self.window addSubview:menuController.view]; 

    ..... 
} 

私が追加した場合viewController.view最初viewController.viewが横位置であり、それはlandscapeLeftまたはlandscapeRightに回転させることができます。しかし、menuController.viewはまだポートレートの位置にあり、ビューはまったく回転できません。

私がmenuController.viewを追加すると、まず状況が逆になります。

どうしてですか?これを修正するには?私のアプリはほぼ完了です。私のコードを大きく変更せずにこの問題を解決する簡単な方法はありますか?

ご迷惑をおかけして申し訳ございません。どうもありがとうございました!

答えて

0

どのView ControllerがWindow用のrootViewControllerとして定義されていますか?デバイスがAFAIKを回転すると、操作されるビューはrootViewController.viewのビューになります。

これは、各ビューコントローラのshouldAutorotateToInterfaceOrientationにNSLogを入れて確認できます。私が正しいとすれば、この関数への呼び出しは1つしか見えません。

ルートにするビューコントローラを定義し、もう一方をモーダルに表示するか、ナビゲーションコントローラを使用します。

希望すると助かります!

+0

To:Gonzalo Larraldeおかげでloooot。私はあなたが何を言っているのか理解しています。私のアプリにはrootViewControllerの定義はありません。だからあなたのやり方を試しました。 menuControllerはrootViewControllerとして定義され、viewControllerはmenuController.viewにサブビューとして追加されます。 viewController.viewは空白になると私は期待されているものとして、menuControllerが表示されます。または、両方のコントローラを代理人に追加する代わりに、インスタンスとしてmenuControllerクラスにviewControllerを追加する必要があります。このようにして、私が望んでいない多くのコードを変更する必要があるかもしれません。 – Lynn

+0

どうすればよいですか? menuControllerとviewControllerは同時に表示する必要がありますか?その場合、それらのビューのうちのどれがメインビューコントローラであるかを指定します。ビューコントローラは常に表示されたままにしておく必要があります。この場合、メインビューコントローラに予約されたmenuView内でビュー/スクロールビューを定義し、次にmenuController内でviewControllerを定義してインスタンス化し、ビューを追加します。 –

+0

一度に1つのビューのみを表示する必要があります。デリゲートの私のコードdidFinishLaunchingWithOptions:{....... viewController.view.hidden = TRUE; [self.window setRootViewController:menuController]; \t [self.window.rootViewController.view addSubview:viewController.view]; \t \t [self.window makeKeyAndVisible];} – Lynn