Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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_Animation_Uipageviewcontroller - Fatal编程技术网

Iphone UIPageViewController有时在没有动画的情况下进行转换。为什么?

Iphone UIPageViewController有时在没有动画的情况下进行转换。为什么?,iphone,animation,uipageviewcontroller,Iphone,Animation,Uipageviewcontroller,我有一个图书应用程序,它使用UIPageViewController来导航它的内容。出于某种原因,有时我翻页(使用滑动手势),会发生转换,但没有动画。没有翻页动画,但新内容就在那里 为什么呢?可能是因为我在后台进行了一些db调用,可能会干扰UI动画吗 谢谢 编辑:下面是处理转换的代码 #pragma mark - UIPageViewControllerDataSource Methods - (UIViewController *)pageViewController:(UIPageView

我有一个图书应用程序,它使用UIPageViewController来导航它的内容。出于某种原因,有时我翻页(使用滑动手势),会发生转换,但没有动画。没有翻页动画,但新内容就在那里

为什么呢?可能是因为我在后台进行了一些db调用,可能会干扰UI动画吗

谢谢

编辑:下面是处理转换的代码

#pragma mark - UIPageViewControllerDataSource Methods

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController 
  viewControllerBeforeViewController:(UIViewController *)viewController
{
currentIndex = [self.modelArray indexOfObject:[(ContentViewController *)viewController labelContents]];
if(currentIndex == 0)
{
    return nil;
}
ContentViewController *contentViewController = [[ContentViewController alloc] init];
contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex - 1];

[data setCurrentPage:currentIndex-1];
return contentViewController;
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController
   viewControllerAfterViewController:(UIViewController *)viewController
{
currentIndex = [self.modelArray indexOfObject:[(ContentViewController *)viewController labelContents]];
if(currentIndex == self.modelArray.count-1)
{
    return nil;
}
ContentViewController *contentViewController = [[ContentViewController alloc] init];
contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex + 1];

[data setCurrentPage:currentIndex+1];


return contentViewController;
}

#pragma mark - UIPageViewControllerDelegate Methods

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController
               spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
{
if(UIInterfaceOrientationIsPortrait(orientation))
{
    //Set the array with only 1 view controller
    UIViewController *currentViewController = [self.pageViewController.viewControllers objectAtIndex:0];
    NSArray *viewControllers = [NSArray arrayWithObject:currentViewController];
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];

    //Important- Set the doubleSided property to NO.
    self.pageViewController.doubleSided = NO;
    //Return the spine location
    return UIPageViewControllerSpineLocationMin;
}
else
{
    NSArray *viewControllers = nil;
    ContentViewController *currentViewController = [self.pageViewController.viewControllers objectAtIndex:0];

     currentIndex = [self.modelArray indexOfObject:[(ContentViewController *)currentViewController labelContents]];
    if(currentIndex == 0 || currentIndex %2 == 0)
    {
        UIViewController *nextViewController = [self pageViewController:self.pageViewController viewControllerAfterViewController:currentViewController];
        viewControllers = [NSArray arrayWithObjects:currentViewController, nextViewController, nil];
    }
    else
    {
        UIViewController *previousViewController = [self pageViewController:self.pageViewController viewControllerBeforeViewController:currentViewController];
        viewControllers = [NSArray arrayWithObjects:previousViewController, currentViewController, nil];
    }
    //Now, set the viewControllers property of UIPageViewController
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];

    return UIPageViewControllerSpineLocationMid;
}
}

我想是因为你的台词:

[data setCurrentPage:currentIndex-1]; 
viewControllerBeforeViewController:
viewControllerBeforeViewController:
函数中


这些函数只需要返回适当的viewController。更改当前控制器并播放动画的任务不是您的,而是
UIPageViewControllerDataSource
委托。如果您自己设置,将不会出现动画

这可能是一个漏洞,您可以发布您的代码吗?我面临同样的问题。你解决了吗。?谢谢你