Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIPageViewController中的页码_Iphone_Objective C_Uipageviewcontroller - Fatal编程技术网

Iphone UIPageViewController中的页码

Iphone UIPageViewController中的页码,iphone,objective-c,uipageviewcontroller,Iphone,Objective C,Uipageviewcontroller,我一直在按照线程为我的UIPageViewController获取计数器 它就像一个符咒,除了当我到达第一页或最后一页,然后页码停留在前一页。幸运的是,内容至少发生了变化 下面是一些代码: if(pageController.viewControllers.count != 0){ ViewPostController *vpc = [pageController.viewControllers objectAtIndex:0]; NSUInteger retreivedInde

我一直在按照线程为我的UIPageViewController获取计数器

它就像一个符咒,除了当我到达第一页或最后一页,然后页码停留在前一页。幸运的是,内容至少发生了变化

下面是一些代码:

if(pageController.viewControllers.count != 0){
    ViewPostController *vpc = [pageController.viewControllers objectAtIndex:0];
    NSUInteger retreivedIndex = [self indexOfViewController:vpc];
    self.title = [NSString stringWithFormat:@"%d of %d", retreivedIndex+1, [pageImageContent count]];
}    

有人知道为什么计数器不能到达外部数字吗


提前感谢

这是一个老问题,我的回答甚至可能无法直接解决困扰Tom的问题,但可能这些信息会对某人有所帮助。UIPageViewController让我烦恼了好几天。我的错误是假设这些方法只在翻页时被调用:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
事实上,在翻页过程中,它们似乎被多次调用。我在主视图控制器中有一个currentPage变量,每当调用这两个方法时,我都会递增/递减该变量,但它会产生类似于Tom描述的奇怪行为。我仍然使用那些你必须使用的方法,但是用另一种方法进行递增/递减。下面是这些方法的样子:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    if (self.currentPage==0) {
        return nil;
    }
    else {
        return [[self pageArray] objectAtIndex:self.currentPage-1];
    }
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    if (self.currentPage==self.pageArray.count-1)
    {
        return nil;
    }
    else
    {
        return [[self pageArray] objectAtIndex:self.currentPage+1];
    }
}
currentPage的增量/减量出现在以下方法中:

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
    if (completed)
    {
        int currentIndex = ((UIViewController *)[self.pageViewController.viewControllers objectAtIndex:0]).view.tag;
        self.currentPage = currentIndex;
    }
}
要使用此方法,必须添加两个协议

<UIPageViewControllerDataSource, UIPageViewControllerDelegate>
否则该方法将不会被调用。我使用视图标签来确定每个页面的索引,但是还有其他方法来获得这个数字。有关获取当前页面索引的方法的讨论,请参阅本文:

我在web上找到的UIPageViewController教程都显示了对每个页面重用的单个viewcontroller的使用,这对我没有帮助,因为每个页面都有一个单独的viewcontroller

<UIPageViewControllerDataSource, UIPageViewControllerDelegate>
self.pageViewController.delegate=self;