0

私はプロジェクトに取り組んでおり、問題に直面しています。私の問題は、5.0以降のプロジェクトを作成していることです.私のプロジェクトはすべて縦向きビューですが、両方のビュー(横向きと縦向き)を持つビューは1つだけです.NavigationControllerカスタムクラスを使用し、カスタムナビゲーションクラスで

    - (NSUInteger)supportedInterfaceOrientations
  {
int interfaceOrientation = 0;

if (self.viewControllers.count > 0)
{
    id viewController;
    for (viewController in self.viewControllers)
    {
       if ([viewController isKindOfClass:([CalenderViewController class])])
        {
            interfaceOrientation = UIInterfaceOrientationMaskAll;
        }
        else
        {
            interfaceOrientation = UIInterfaceOrientationMaskPortrait;
        }
    }
}
return interfaceOrientation;
}` 

CalenderViewController は、両方のビューをサポートする私のビューです。CalenderViewController にビューをポップすると、このコードは popview で正常に動作しますが、これは正常に動作しますが、ポートレート ビューのみを持つ CalenderViewController に新しいビュー コントローラーをプッシュすると、新しいビュー コントローラーはランドスケープのままになります。ポートレートモードにする必要があります。解決策を楽しみにしています

4

1 に答える 1

0

このような場合、 に戻るべきではありませNOshouldAutorotate。これを行うと、サポートされている方向がチェックされず、コントローラーは最後に使用された方向に固執します。

代わりに、すでに行っているように、 に戻っYESshouldAutorotateで 1 つの向き (ポートレート) を指定するだけです。supportedInterfaceOrientations

戻ることは、コントローラーを他の方向に自由に回転させたい場合だけを意味するものYESではありません。shouldAutorotateまた、異なる動作をするビューをポップまたはプッシュした後、コントローラーがサポートされている唯一の方向に回転する必要がある場合にも使用する必要があります。

于 2013-08-20T12:59:22.370 に答える