私はstackoverflowとobjective-Cプログラミングが初めてです。以下で説明する問題を検索しましたが、有効な解決策が見つかりません。
私のアプリケーションは、ナビゲーション構造を備えた単純なオフライン ブラウジング アプリです。appDelegate では、次のいずれかの方法で RootViewController (UITableViewController) をロードします。
ソリューションA
[window addSubview:navigationController.view];
[window makeKeyAndVisible];
return YES;
ソリューションB
RootViewController* rootviewcontroller = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:rootviewcontroller];
rootViewController は単にいくつかのビューをプッシュします。
TipAndTrickViewController *mTipAndTrick = [[TipAndTrickViewController alloc]initWithNibName:@"TipAndTrickViewController" bundle:nil];
[self.navigationController pushViewController:mTipAndTrick animated:YES];
より深いビューでは、詳細な modalView (UIViewController) を提示します。私が望むのは、この最後のビューでのみ自動回転を有効にすることです。ポートレートの向きは、以前のすべてのビューに適しています。最後のビューは正しい方法で実装されています:
shouldAutorotateToInterfaceOrientation:interfaceOrientation
自動回転する必要があります
willRotateToInterfaceOrientation:toInterfaceOrientation 期間:期間
willAnimateRotationToInterfaceOrientation:interfaceOrientation 期間:期間
オーバーライド
自動回転する必要があります
shouldAutorotateToInterfaceOrientation:interfaceOrientation
rootViewController で NO/YES を返すようにし、許可された向きを希望の方法で設定します。
サポートされているインターフェイスの向き
(rootViewCONtroller と最後のビューの両方で)、次の結果が得られます。
- ソリューションAを使用すると、すべてのビューが回転しません。
- ソリューションBを使用すると、すべてのビューが常に回転します。
私は間違った方法で何をしていますか?よろしくお願いいたします。