与子视图控制器分页滚动视图

时间:2012-04-02 11:29:02

标签: ios scrollview

使用分页实现水平滚动视图的最佳做法是什么?每页有一个视图控制器?

由于iOS5具有用于视图控制器容器/包含的API,PageControl示例仍然是实现此目的的最佳方式吗?

6 个答案:

答案 0 :(得分:6)

我知道这个问题有点旧,但是从iOS 6开始,UIPageViewController有一个名为UIPageViewControllerTransitionStyleScroll的新过渡样式属性,它允许您将页面控制器用于像您这样的用例,只需在页面之间滚动而不是iBooks风格的页面卷曲过渡。

您还应该观看2012 WWDC视频编号223 - Enhancing User Experience with Scroll Views,它们基本上将使用您描述的方法的旧应用转换为具有滚动样式转换的新UIPageViewController。

答案 1 :(得分:2)

我的回答是,这取决于你的目标。如果您想尽可能高效地创建应用程序,我只会使用示例代码中的方式。我以前用过它,我会再做一次。

另一方面,如果你的目标是了解视图控制器包含,它是如何工作以及如何使用它,这可能是一个很好的案例来尝试它。如果您这样做,请不要忘记查看WWDC视频“实施UIViewController遏制”(https://developer.apple.com/videos/wwdc/2011/)。

答案 2 :(得分:2)

从iOS5开始,最佳做法是使用与PageControl示例相同的方法。这是一个控制器类(注意不是视图控制器)。使用每个页面的子视图控制器。

到目前为止,还没有更好的方法来使用iOS5中包含的视图控制器包含方法来实现分页滚动视图。

答案 3 :(得分:-1)

答案 4 :(得分:-1)

我认为UIPageViewController可以横向进行:

- (id)initWithTransitionStyle:(UIPageViewControllerTransitionStyle)style navigationOrientation:(UIPageViewControllerNavigationOrientation)navigationOrientation options:(NSDictionary *)options

enum {
    UIPageViewControllerNavigationOrientationHorizontal = 0,
    UIPageViewControllerNavigationOrientationVertical = 1
};
typedef NSInteger UIPageViewControllerNavigationOrientation;

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIPageViewControllerClassReferenceClassRef/UIPageViewControllerClassReference.html

答案 5 :(得分:-1)

如果将View Controllers视图(myViewControllerOne.view)添加到UIScrollView - 然后适当地将它们框架化为水平显示 - 当用户与滚动视图内部的视图交互时,将调用View Controller中的方法。

我的意思是,如果您将MyViewControllerOne.view作为滚动视图内的子视图,当您滚动到滚动视图的“页面”并按下按钮时,MyViewControllerOne中的附加方法(IBAction等)将是调用。

这应该为您提供所需的所有功能,例如添加UI元素,表格,另一个滚动视图等。这些元素将从其原始视图控制器进行控制。

希望这有帮助!