iOS - 使用UIPageContol在页面之间加载和切换

时间:2014-01-16 19:58:16

标签: ios uiviewcontroller uiscrollview uistoryboard uipagecontrol

我想使用UIPageControl在不同的视图控制器之间导航。我有2个视图控制器,另一个主视图控制器包含UIPageControl。要在其间导航的2个视图控制器已作为子视图添加到主视图控制器。当我启动应用程序时,我看到一个空白屏幕。我使用了pageControl.currentPage = 0,但我无法理解为什么我无法看到这些观点。

请注意,我不想在我的应用程序中使用UIScrollView

编辑 - 我已按照本教程http://www.wannabegeek.com/?p=168

但它使用滚动视图。我不想使用滚动视图,因为它在UIWebView和我在不同视图控制器中使用的CorePlot创建了一些问题。

我在不使用滚动视图的情况下寻求如何修改本教程的指导。谢谢!

3 个答案:

答案 0 :(得分:1)

UIPageControl不会为您处理滑动或页面切换。为了使用它,您需要有一个滚动视图(或其他类型的控件)来处理滑动和实际的页面切换,然后实现UIScrollViewDelegate协议(或您正在使用的控件所需的任何协议) )了解页面控件何时应更新其当前页面位置(当前选定的点)。 UIPageControl本身并没有真正做很多事情。

答案 1 :(得分:1)

将其他视图控制器添加为子视图只关联视图控制器 - 它不会将它们管理的视图添加为子视图。因此,当您将它们添加为子项时,您还应添加子视图并设置初始帧。您可能还需要添加滑动手势来触发视图动画以设置视图框架的动画(尽管还有其他几个选项,例如使用滚动视图)。

作为移动视图的动画的一部分,您手动更新页面控件(不会自动更新)。


loadScrollViewWithPage方法是关键。使用参数0然后1调用此方法以加载两个页面并将视图添加为子视图。只需将self.scrollView更改为self.view

我会在页面控件中添加一个(两个真的,但先获得1个工作)滑动手势。然后当它被刷过时你可以移动其他视图。

滑动手势回调:

- (void)swipeRightToLeftGesture:(UIGestureRecognizer *)gestureRecognizer
{
    [UIView animateWithDuration:1
                     animations:^{

                     for (UIViewController *vc in self.childViewControllers) {
                         CGRect frame = vc.view.frame;
                         frame.origin.x -= self.view.frame.size.width;
                         vc.view.frame = frame;
                     }
                 }];
}

对子视图控制器进行此迭代,并动画化视图的帧以将其移动到左侧。从左到右滑动处理器将是相同的,除了它将+=宽度移动到右边。

[代码编辑 - 语法]

答案 2 :(得分:0)

除了显示一些点之外,UIPageControl没有做任何其他事情。如果你想要一种在视图控制器之间切换的方式,听起来你想要UIPageViewController,这是一个完全不同的动物。 UIPageViewController的一个很好的功能是它可以显示UIPageControl作为指示/切换视图控制器的一种方式,这可能就是你所追求的那种。