pagecontrol和pageviewcontroller ios之间的区别?

时间:2014-12-01 10:24:29

标签: ios objective-c cocoa-touch

UIpageControlUIpageViewController之间有什么区别?他们使用这些控制的用例是什么?

我创建了一个uipageviewcontroller演示,其中我创建了一个pageviewcontroller,对于它的内容,我已经采用了一个内容视图,我使用图像视图来改变用户每个左手或右手的图像(但是避难所' t使用手势功能)。当我尝试左/右滚动它们时,图像只是加载并消失,并且出现了视图,即根视图。

如何删除此错误?

下面是我使用的数据源函数的代码这是我用来更改内容视图图像的数据源代码:

#pragma mark datasource pagecontroller 

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
     viewControllerBeforeViewController:(UIViewController *)viewController
{
    _currentIndex--;

    if(_currentIndex == 0)
    {
        return nil;
    } else {
        return [self viewControllerAtIndex:_currentIndex];
    }

}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
       viewControllerAfterViewController:(UIViewController *)viewController
{    
    _currentIndex++;

    if(_currentIndex == 4)
    {
        return nil;
    } else {
        return [self viewControllerAtIndex:_currentIndex];
    }
}

- (ContentViewController *)viewControllerAtIndex:(NSUInteger)index
{    
    NSLog(@"~~~~~%lu   %@" ,(unsigned long)index , [NSString stringWithFormat:@"%@",[pageContent objectAtIndex:_currentIndex]]);

    childViewController.imgView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[pageContent objectAtIndex:_currentIndex]]];

    //childViewController.imgView.image = [UIImage imageNamed:@"page3.png"];

    return childViewController;
}

2 个答案:

答案 0 :(得分:5)

UIPageViewController是容器控制器。它管理多个视图控制器的显示,并在它们之间滚动。

UIPageControl是一系列小点,显示您所在的页面。

他们彼此完全无关。但它们可以一起使用。

至于你的“bug”,我们必须在你的页面视图控制器数据源中看到代码。您无需使用自己的手势识别器。页面视图控制器管理滚动本身。

修改

您的数据源方法应如下所示......

- (ContentViewController *)viewControllerAtIndex:(NSUInteger)index {
    MyImageViewController *controller = [MyImageViewController new];

    controller.imgView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@",[pageContent objectAtIndex:_currentIndex]]];

    return controller;
}

目前似乎只有一个控制器childViewController。这意味着您正在尝试反复创建相同的一个。您需要创建新的控制器并填充它们。

答案 1 :(得分:4)

UIPageViewController是UIKit框架中的一个类,可以 用于显示UIViewControllers的集合。

与其他容器类不同,例如UINavigationControllerUITabBarController,此类可以水平排列所有视图 或垂直排成一行。

为了在两个屏幕之间切换,用户 可以使用滑动手势,其中UIPageControl是点 显示您所在的页面(对用户可见)。