2013-06-04 69 views
0

我有父/子視圖控制器的系統,看起來像這樣childViewControllers沒有收到旋轉事件

-- (Parent) RootViewController 
     -- (Child) ChildController 
       -- (Child) GrandChildController1 
       -- (Child) GrandChildController2 

基本上,我有一個childViewController根視圖控制器。該childViewController充當其他控制器的parentViewController。現在,我想允許其中一個GrandChildViewController旋轉。但是,這是允許旋轉的層次結構中的唯一控制器。

我添加子視圖控制器的層次結構是這樣的:

[self addChildViewController:_childViewController]; 
[self.view addSubview:_childViewController.view]; 

現在,當設備旋轉時,我的第一個childViewController正在接收旋轉事件,但沒有該控制器的兒童(盛大子視圖控制器)正在接收輪換事件。有人知道爲什麼

感謝

+0

你是否從循環回調覆蓋中調用超級方法? –

+0

你也應該調用[_childViewController didMoveToParentViewController],但我不知道這是否能解決你的問題。 – rdelmar

+0

檢查這個SO回答http://stackoverflow.com/a/8927955/2315974 – danypata

回答

1

事情看出來:

  • 在iOS 6中您還需要重寫supportedInterfaceOrientations - 重寫shouldAutorotate是不夠的。
  • 在iOS 5中,如果父VC爲shouldAutorotateToInterfaceOrientation:返回NO,它將取消子VC的旋轉。我不確定iOS 6自動旋轉機制的行爲是否相似。

從您的意見,我想你是缺乏supportedInterfaceOrientations。如果我的猜測是錯誤的,那麼如果您向我們展示了在所有控制器中實現自動旋轉方法,可能會有所幫助。