2012-03-15 6 views
0

私はこの問題を1日のうちのより良い部分(そして多くの多くのGoogleおよびStackOverflow検索)と戦い、問題はありますが、私はどこでもこのソリューションを見ていません。ルートUIViewControllerは向きの変更に応答しますが、2番目のUIViewControllerは表示されません

私は、ルートコントローラとしてUINavigationControllerと、ルートコントローラが所有する2つのUIViewControllerを持つアプリケーションを持っています。すべてがプログラマチックに作成されていますが、私はInterface Builderを全く使用していません。両方のUIViewControllerは、(おそらく)すべての向きで回転を処理するように設定されていますが、ルートUIViewControllerだけが正しく回転します。 2番目のUIViewControllerの場合、shouldAutoRotateToInterfaceOrientationは一度は起動しますが、再度発生することはありません。willRotateToInterfaceOrientationは決して起動しません。

問題のあるView Controllerには、UILabel、UITextView、およびUISwitchというサブビューの標準コントロールしかありません。 tabBarまたはその他のView Controllerはサブビューとして含まれていません。ビューとVCはどちらもスコープにあり、そうでなければ健全だと思われます。ビューとのすべての対話は、回転を除いて正しく機能します。

私は、具体的呼んでいる:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications 

と実装を:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 

didRotate方法と一緒に違いはありませんでした。 iOSの5で

答えて

0

を必要としている可能性が考えられます。私はallocを呼んでいましたビューコントローラインスタンスでinit(私の防衛の編集で失われてしまった)なし。とても驚くべきことは、ビューが他のすべての点で正しく機能していたことです。私はAppleのテクニカルQ & A:http://developer.apple.com/library/ios/#qa/qa1688/_index.htmlを読んでいましたが、私が見ていた問題に接続していませんでした。キー行は最後の文です。オブジェクトを適切に初期化するには、View ControllerでオーバーライドしているinitメソッドまたはinitWithNibNameメソッドでsuperを呼び出す必要があります。 initは全く呼び出されていないので、もちろん[super init]も起こったことはありません。

0

、手動ビューを追加する場合、非常によく、あなたは私が見つけた問題は私の一部に愚かなものだった方法を適用するaddChildViewController:

+0

ありがとうございます!私はiOS 5でこの問題を認識していませんでしたが、それが起こると、私はiOS 4.2をターゲットにしていました。 – strings42

関連する問題