【问题标题】:Odd number of pages on UIPageViewControllerUIPageViewController 上的奇数页数
【发布时间】:2012-05-29 18:03:04
【问题描述】:

我已经在我的 iPad 应用程序中实现了 UIPageViewController。但是,当 iPad 处于纵向时,您可以看到所有页面,但是当 iPad 处于横向时,您看不到最后一页,如果您在纵向的最后一页并更改为横向,则应用程序会崩溃以下错误:

由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“提供的视图控制器数量 (1) 与 >请求的脊椎位置 (UIPageViewControllerSpineLocationMid) 所需的数量 (2) 不匹配”

因为它需要两页,而只有一页。

当“书”的页数为奇数(例如 7 页)时,我该怎么做才能避免前面的异常?

【问题讨论】:

  • 我的问题类似,我一次有两个视图控制器,就像一本书一样。在几个这样的视图之后,我需要在景观本身上显示单个视图而不改变方向。你能指导我吗?

标签: ios ipad uipageviewcontroller


【解决方案1】:

我修的方法是这样的。

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    DSBookletPageViewController *currentVC = (DSBookletPageViewController *)viewController;
    NSUInteger currentIndex = [currentVC index];

    if(currentIndex >= self.modelArray.count-1) {
        if (currentIndex %2 == 0 && !isPortrait) {
            //return an empty one
            DSBookletPageViewController *newVC = [[DSBookletPageViewController alloc] init];

            [newVC setIndex:currentIndex+1];

            return newVC;
        } else {
            return nil;
        }
    }

    currentIndex ++;

    UIImage *currentPage = [self.modelArray objectAtIndex:currentIndex];
    DSBookletPageViewController *newVC = [[DSBookletPageViewController alloc] initWithImage:currentPage andOrientation:isPortrait];
    [newVC setIndex:currentIndex];

    return newVC;
}

我基本上检查我是否在数组的末尾,或者超出它,因为我正在向我的模型数组之外的 UIPageViewController 添加另一个页面。如果我在那里,并且当前索引是偶数并且我们不是纵向的,那么我添加页面,如果不是,那么我返回 nil。

希望对你有帮助。

【讨论】:

  • 我没有测试,因为现在我总是使用偶数页,但看起来还可以
  • 我的问题类似,我一次有两个视图控制器,就像一本书一样。在几个这样的视图之后,我需要在景观本身上显示单个视图而不改变方向。你能指导我吗?
【解决方案2】:

看看我的回答here。基本上,在您的情况下,您必须设置UIPageViewControllerDataSource,它为第一次出现视图时未显示的所有页面提供内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多