2

ナビゲーションコントローラーに3つのビューコントローラーを追加しました。1番目と2番目のViewControllerは両方の方向をサポートする必要がありますが、3番目のViewControllerはランドスケープモードのみをサポートします。しかし、ポートレートモードで2番目のビューコントローラから3番目のビューコントローラに移動すると、ポートレートモードで表示されます。どうすればこれを修正できますか?横向きのみをサポートするには、3番目のビューコントローラーが必要です。

4

1 に答える 1

0

これは iOS 6 の回答です。

UINavigationController がその子の回転設定を尊重するようにするには、それをサブクラス化し、以下をオーバーライドします。

- (BOOL)shouldAutorotate
{
    return self.topViewController.shouldAutorotate;
}
- (NSUInteger)supportedInterfaceOrientations
{
    return self.topViewController.supportedInterfaceOrientations;
}

これは、新しい UINavigationController を作成するとき、および以前のビュー コントローラーにポップバックするときに機能します。詳細はこちら - UINavigationController の ViewController の向きの変更

新しいView Controllerをプッシュするときに機能させるには、これをサブクラスに追加します:

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [super pushViewController:viewController animated:animated];

    UIViewController *viewController = [[UIViewController alloc] init];
    [self presentViewController:viewController animated:NO completion:nil];
    [self dismissViewControllerAnimated:NO completion:nil];
}

移行は少し不快ですが、仕事は完了します。詳細はこちら -横向きから縦向きへの pushViewController の問題

于 2013-07-01T21:09:42.650 に答える