關於何時使用UIViewContoller與UIView有一些很好的答案。例如here和here。應用程序結構:分頁界面中的UIView與UIViewController
的一般要點是,一個UIViewController應該用於控制數據的完整畫面,因爲
它被設計成手柄轉動。一次只能有一個UIViewController在屏幕上,因爲only the newest將被通知輪換髮生。
要保持對MVC範例的真實性,您的業務邏輯應該存在於UIViewController中,而只有顯示和交互邏輯應該存在於UIView中。推測商業邏輯與整個屏幕上的內容有關。
我的問題是,鑑於此,我該如何在幾個頂層視圖之間使用左右分頁來構造應用程序?
我想用幾個UITableViews創建一個接口,並保存一系列配方。用戶左右滑動以在列表之間導航。底部有一個共同的菜單,無論如何都保持固定。
我最初的想法是爲UIScrollView使用一個UIVIewController,然後從那裏添加子視圖。
但是我真的很喜歡每個列表都有它自己的UIViewController,所以它可以處理自己的旋轉,並保持業務邏輯像它自己的REST方法。讓頂層的UIViewController處理子視圖的旋轉似乎是一件痛苦的事情,而且將邏輯放在其他任何地方似乎違反了MVC。
有沒有一種方法來構建一個應用程序,以便多個UIViewControllers住在UIScrollView中,還是適合使用一系列頂級UIViewControllers和UISwipeGestureRecognizer來模擬UIScrollView的分頁效果?
謝謝。
謝謝,直接傳遞orientation-change方法的好主意 – bcattle
@bcattle如果你調用適當的[容器視圖控制器方法](https://developer.apple.com/library/ios/documentation/uikit/reference/ UIViewController_Class/Reference/Reference.html#// apple_ref/doc/uid/TP40006926-CH3-SW81),您不必手動傳遞這些旋轉方法。它們會自動被傳遞(這是實現容器的許多原因之一)。您可以_can_,如果需要,通過返回'NO'來響應'shouldAutorotateToInterfaceOrientation',但禁用該行爲,但默認情況下,容器會自動將這些旋轉事件傳遞給其子項。 – Rob