0

私が取り組んでいるアプリに次のような問題があります。

アプリのウィンドウには、rootViewControllerのカスタム クラス ( MenuViewController) に設定された がありUIViewControllerます。このView ControllerにはrootViewController独自のプロパティがあります。設定するたびにこれが発生します(コードの本当に短いバージョン):

- (void)setRootViewController:(UIViewControlelr *)rootViewController
{
    ...
    _rootViewController = rootViewController;
    if (self.rootViewController) {
        [self addChildViewController:rootViewController];
        [self.view addSubview:rootViewController.view];
    }
    ...
}

これMenuViewControllerで、rootViewController の上にモーダル ビュー コントローラーを表示できます。

私はこのようにします:

[self.rootViewController presentModalViewController:viewController animated:YES completition:nil];

ここまではすべて問題ないようです。iPad では、モーダル ビュー コントローラーから呼び出すたびに、ビュー コントローラーが表示されたときの初期の向きに関係なく、[self.presentingViewController dismissViewControllerAnimated:YES completion:nil]その下のインターフェイスが同じ向き (つまり ) に回転します。UIInterfaceOrientationLandscapeLeft

結論として、私のビューの階層は次のとおりです。

Window
   |
   - Menu View Controller
      |
      - Root View Controller
          |
          - Modal view controller

これを修正する方法を知っている人はいますか?iPhoneでは発生しません。

4

1 に答える 1

1

iPad ではMenuViewController複数rootViewControllerのインターフェイスの向きがサポートされているように思えますが、iPhone ではサポートされていません。これについては何も言われていないので憶測です。

これが事実であり、rootViewController が実際に複数のインターフェイスの向きをサポートしている場合、修正は- supportedInterfaceOrientationsポートレートをオーバーライドして返すことです。これは、あなたが望むことを示唆しているようです。

于 2014-04-17T16:19:48.943 に答える