2012-06-08 50 views
1

我在我的UIScrollView子類中有一個UIViewController的視圖。問題是我的UIViewController沒有得到我旋轉設備時調用的willRotate委託。這可能是因爲UIView沒有在其中實現旋轉委託。解決這個問題的最好方法是什麼?UIView裏面的UIViewController沒有得到輪換委託

基本上結構是我有一個MainViewController它有一個UIScrollView。在這個UIScrollView裏面我有一個子視圖,這是一大堆UIViewControllers的視圖。現在的問題是,我旋轉時沒有獲得旋轉呼叫。解決這個問題的一種方法是從MainViewController委託給各自的UIViewController。有沒有更好的/優雅的方式來解決這個問題?

我加入它作爲我的UIScrollView不是我MainViewController一個子視圖,你不能從一個UIView做UIViewControllers遏制。糾正我,如果我錯了

+0

確保'MainViewController'的觀點的屬性'.autoresizeSubviews'被置'YES'。 – skram

+0

如果您使用iOS 5,則應使用childViewController API並將所有這些視圖控制器添加爲滾動視圖視圖控制器的子項。然後你可以有免費的旋轉方法,以及所有其他外觀方法。 – Matt

+0

@Matt是的..我意識到這一點..但我如何添加視圖控制器作爲滾動視圖的子視圖?你不能從UIView的權利添加一個childViewController? UIScrollView是UIView而不是UIViewController。我想UIViewController遏制只適用於UIViewController UIViewController而不是UIView UIViewController?糾正我,如果我錯了理解 – adit

回答

0

關注,我在我的評論張貼視頻:https://developer.apple.com/videos/wwdc/2011/?id=102

這裏是視圖控制器遏制,這是你所尋找的,不是所有的邏輯組合成一個視圖控制器或使用委託設計的簡短摘要爲SDK中內置的東西。

一個視圖控制器有一個視圖,併爲該視圖提供邏輯,最有可能的是它的一些子視圖。

也許你有在層次結構保證該視圖特定視圖的複雜視圖層次和複雜的邏輯有它自己的視圖控制器控制它和它的子視圖。

假設你有一個MainViewController,它的觀點是一個UIScrollView(或子類)。在這個scrollview中,你可能有各種複雜的視圖保證他們自己的控制器,所以你有一個類SubViewController,它具有scrollview的子視圖和視圖。

SubViewController需要有旋轉和外觀回調方法,以便正確地工作,以實現邏輯的子視圖和處理佈局的變化。

[mainViewControllerInstance addChildViewController:subViewControllerInstance]; 

但是,等等。子視圖仍然不在視圖層次結構中。

[mainViewControllerInstance.view addSubView:subViewControllerInstance.view]; 

您已成功創建兩個視圖控制器的有效視圖控制器層次結構,並設置其視圖的關聯視圖層次結構。

現在,您將有適當的回調功能,如MainViewController將它們轉發給SubViewController。

編輯:

查看的文檔視圖控制器容納的過視圖:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

1

我想你會反對MVC pattern。視圖內不能有控制器;相反,您應該有一個控制器來調節視圖和用戶輸入之間的通信。在你的情況下,你可以將scrollview設置爲MainViewControllerself.view,然後將viewcontrollers視圖添加爲子視圖。

+0

好主意..然而,再次..我有一個UIScrollView的子類,在這個子類裏面我添加視圖控制器的子視圖..我應該只是然後委託給視圖控制器來說,添加VC作爲一個孩子時我從滾動視圖添加它? – adit

+0

我可以將我所有的UIScrollView子類的所有邏輯移到我的MainViewController中,因爲現在它的視圖是UIScrollView,但是我想在其他一些UIViewController中重用這個UIScrollView – adit

+0

我認爲您不應該將uiviewcontrollers視圖作爲滾動視圖的子視圖,這些只是意見..你應該有一個管理所有子視圖的控制器。 – Mat

相關問題