0

iOS 6.1 および 7.0 で作業しています。挙動はどちらも同じです。ルートView ControllerはUIVeiwController. UINavigationViewControllerアプリで表示されるすべてのコントローラーを管理するプロパティがあります。プッシュされた各コントローラーの正しい向きを取得するために、ローテーション メソッドをサブクラス化UINavigationControllerし、オーバーロードしました。shouldAutorotatesupportedInterface

私が欲しいもの:ナビゲーション 3 コントローラーを押し込みます。2 番目のコントローラーは縦向きのみにする必要があります。

私が得るもの:メソッドがポートレートモードを返すにもかかわらず、2番目のコントローラーを押すと、まだランドスケープモードになりsupportedInterfaceOrientationます。次に、3番目のコントローラーを押して、シミュレーターまたはデバイスをランドスケープモードにし、2番目のコントローラーにポップします。これが最も興味深いものです画面から…

私の推測では、Apple のドキュメントでは、ほとんどのトップ ビュー コントローラーのみが回転について通知されると述べているため、ナビゲーション コントローラーをルートにすると、3 番目のコントローラーから 2 番目のコントローラーにポップすると正しく動作しますが、1 番目から 2 番目にプッシュするときにはまだ動作しません。ナビゲーションコントローラーがルートビューコントローラーのプロパティにすぎない場合、私の構造でこの問題を解決する必要がある方法。

プロジェクトへのリンクは次のとおりですhttps://github.com/Trubianov/Navigation.git

4

2 に答える 2

0

問題は、新しいワークフローでは、コントローラーが提示されたときに一度だけ回転メソッドがチェックされるため、機能していないことです。

UINavigationController(またはその他のUIViewControllerコンテナー)内に物をプッシュする場合UIViewController、サポートする方向を子で決定でき、OS がそれを機能させます。

私の提案:UINavigationControllerサブクラスに必要なカスタム コードがない限り、それを完全に削除し、表示している子ビュー コントローラーに回転チェックを移動する必要があります。

于 2013-11-11T18:52:54.663 に答える