2012-03-15 35 views
0

我發佈這個,因爲在與這一問題的一天(和很多很多谷歌和StackOverflow搜索)的最佳部分作鬥爭後,我終於找到這個問題,但我沒有看到任何地方的解決方案。根UIViewController響應方向的變化,但第二個UIViewController不

我有一個UINavigationController作爲根控制器和兩個UIViewController擁有的根控制器的應用程序。所有都是以編程方式創建的,我根本沒有使用Interface Builder。兩個UIViewController都設置爲處理所有方向的旋轉(據稱),但只有根UIViewController正確旋轉。對於第二個UIViewController,shouldAutoRotateToInterfaceOrientation會觸發一次,但不會再次觸發,並且willRotateToInterfaceOrientation根本不會觸發。

有問題的視圖控制器只有子視圖的標準控件:UILabel,UITextView和UISwitch。它不包含tabBar或任何其他視圖控制器作爲子視圖。 View和VC都在範圍之內,看起來很健康。除了旋轉之外,與視圖的所有交互都可以正常工作。

我特別呼籲:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications 

和實施:

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

didRotate方法沒有有所作爲一起。

回答

0

,我發現我的一個愚蠢的一個問題:我打電話alloc在沒有init的視圖控制器實例上(在編輯中迷失了,在我的防守中)。令人驚訝的是,該視圖在所有其他方面正確運作。我已經閱讀過這個Apple Technical Q & A:http://developer.apple.com/library/ios/#qa/qa1688/_index.html,但沒有將它與我看到的問題聯繫起來。關鍵是最後一句:爲了正確初始化對象,必須在您爲視圖控制器覆蓋的任何init或initWithNibName方法上調用super。由於init從來沒有叫過,當然[super init]從來沒有發生過。

0

在iOS 5中,如果要手動添加視圖,它很可能是可能的,你需要應用方法addChildViewController:

+0

謝謝!我沒有意識到iOS 5的這個問題,但恰巧,我的目標是iOS 4.2。 – strings42 2012-03-16 14:49:50

相關問題