关于何时使用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