2011-02-01 11 views
-1

私はカスタムビューコントローラ階層を持っています。 サブビューコントローラがカスタムサブビューコントローラに単にサブビューとして追加されます。また、親ビューコントローラは、サブビューコントローラの-[willRotateToInterfaceOrientation:duration:]-[didRotateFromInterfaceOrientation:]メソッドを正しい時刻に呼び出します。View Controller階層でinterfaceOrientationプロパティを正しく設定するにはどうすればよいですか?

すべてが正常に動作するようですが、何らかの理由でinterfaceOrientationプロパティが正しく設定されていない場合は、常にUIInterfaceOrientationPortraitです。

ランドスケープにするとサブビューコントローラの値がinterfaceOrientationになるようにするにはどうすればよいですか?

答えて

1

あなたはできるとは思いますが、とにかくパブリックAPIを使用することはできません。さらに、あなたがそうしようとしているという事実は、あなたがiOSアプリケーションのために推奨されたデザインに従っていないことを示唆しています。 View Controller Programming Guide

ノートのアドバイスを考えてみましょう:あなたは、複数のサブエリアへのビュー階層を分割し、それぞれを個別に管理する場合は、それぞれを管理する代わりに、ビューコントローラオブジェクトの一般的なコントローラオブジェクト(NSObjectのから下降カスタムオブジェクト)を使用しますサブエリア。次に、単一のView Controllerオブジェクトを使用して、汎用コントローラオブジェクトを管理します。

UIViewControllerは、画面全体のコンテンツを管理するためのものです。その前提に違反したら、フレームワークと戦って、あなたの意見が期待通りに動くようにしようとします。

+0

iPadの分割ビューコントローラがこのルールに違反しているように見えます(分割ビューの一部は本格的なビューコントローラで管理されます)。独自のカスタム分割ビューコントローラを実装したい場合はどうすればよいですか?できません? – user102008

+0

user102008を修正しました.Appleはコンテナビューコントローラを実装することができますが、パブリックAPIではこれを行うことはできません。 iOS 5はこれを変更しますが、それまでは複数のUIViewControllerのビューを一度に表示しようとすることをお勧めしません。代わりに汎用コントローラオブジェクトを使用してください。 – Jonah

関連する問題