使用自定义pageControl时,在UIpageviewController中获取索引号较慢

时间:2014-02-21 09:49:46

标签: ios uipageviewcontroller

在将这个问题作为副本关闭之前,请看我过去两天面临严重问题。

我正在关注UIPageViewController with storyboards tutorial

我尝试开发我的UIPageviewController。我要展示一些用户照片。我不想在底部显示apagecontrol,所以我创建了一个自定义页面控件。当我尝试将索引设置为UIPageControl时,它无法正常工作 - 有时会延迟一些时间到达第5页而只是更新,因此计数不正确

这是我的数据源:

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

    NSUInteger index = ((BMEnlargePhotoPageView*) viewController).pageIndex;
    [self.enlargePhotoPageControl setCurrentPage:index];

    if((index == 0 ) || (index==NSNotFound)){

        return nil;

    }
    index--;



    return [self viewControllerATindex:index];


}




-(UIViewController*)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{

    NSUInteger index = ((BMEnlargePhotoPageView*) viewController).pageIndex;
    [self.enlargePhotoPageControl setCurrentPage:index];


    if(index==NSNotFound){

        return nil;
    }

    index++;


    if(index==[self.userImages count])
    {
        return nil;
    }


    return [self viewControllerATindex:index];

}


- (BMEnlargePhotoPageView*)viewControllerATindex:(NSUInteger)index
{
       if(([self.userImages count]==0) || (index >= [self.userImages count])){

              }

    BMEnlargePhotoPageView *PageContentViewControl = [self.storyboard instantiateViewControllerWithIdentifier:@"EnlargePhoto"];

    PageContentViewControl.imageFIle =self.userImages[index];
    PageContentViewControl.pageIndex = index;


    return PageContentViewControl;

}

我的另一个问题是,我想找到当前可见照片的索引ID,这样我也无法正常使用 - 它会延迟值并且不正确。

注意:当我使用动画页面滚动时,一切运行良好,但在滚动动画中它会被延迟,但我想将它显示为仅滚动我尝试了很多SO ansers没有让我的问题得到一些指导或我做错了。 / p>

1 个答案:

答案 0 :(得分:10)

经过长时间的挫折之后,终于找到了哪一款适合iOS7,并且不介意回答我的问题bcz无人接听,所以我应该填补空白区域。

在UIPageViewController中有一个名为didFinishAnimating:的委托,所以在这里有一个BOOL函数可以识别你的页面被完全或部分转换,所以使用那个BOOL可以检查它以及何时使用偶数动画scroll它会很有用。你的代码就像这样

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed{

    if(completed){

        COntentViewController *enlarge =[self.pageViewController.viewControllers lastObject];
        self.enlargePhotoPageControl.currentPage =  enlarge.pageIndex;

    }

}

在最后一个对象中保存最后传输的内容如果你部分滚动页面BOOL将不会成为现实,它将指示页面是否完全滚动这将帮助那些想要使用自定义页面控件的人。它为我工作很好我如何期望在页面完全滚动时设置pagecontrol索引,除非页面指示器不会被设置。如果我犯了任何错误,那么它仍然是最后一页的数量,这可以纠正自己,甚至是一些好的方法。