私があなたの質問を正しく理解しているなら、デバイスの向きが変わったときに、viewControllersのスタックの2番目または3番目のviewControllerでshouldAutorotateToInterfaceOrientationが呼び出されるようにします。
shouldAutorotateToInterfaceOrientationは、上部のviewControllerでのみ呼び出されます。2番目または3番目のviewControllerのメソッドでレイアウトコードを実行すると、コードは実行されません。
コードに応じて、ソリューションはシンプルで多くあります。これが機能するはずです(Xcodeではテストされていません)。トップViewControllerのshouldAutorotateToInterfaceOrientationメソッドに、次のようなものを追加します。
for (UIViewController *vc in [self childViewControllers])
{
[vc shouldAutorotateToInterfaceOrientation];
}
特定のchildViewControllerへのポインターがある場合は、それを具体的に呼び出すことができます。
ドキュメントからのメモ:
このメソッドの実装は、interfaceOrientationパラメーターの値に基づいてYESまたはNOを返す必要があります。interfaceOrientationプロパティの値を取得したり、UIDeviceクラスによって報告された方向の値を確認したりしないでください。ビューコントローラは、特定の方向をサポートできるか、サポートしていないかのどちらかです。
任意のレイアウトを行うには、次を使用できます。
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
お役に立てれば!