2017-09-08 39 views
0

将UIPageViewControllerSpineLocation设置为.mid我正在创建将用于研究各种术语的iPhone flashcard应用程序。目前,我正在使用UIPageViewController来显示每个连续的卡(视图控制器)。当用户点击一张卡片时,它将翻转并向后显示它们,当它们向左或向右滑动时,它们可以在卡片之间滚动。 Current App interface如何使用transitionStyle .scroll

到目前为止,这项工作很好,但我希望能够在横向显示卡的正面和背面。通常,使用UIPageViewControllerDelegate的方法func pageViewController(_ pageViewController: UIPageViewController, spineLocationFor orientation: UIInterfaceOrientation)并返回.mid(如果方向是水平的)很容易。但是,因为我没有使用.pageCurl而是.scroll作为我的pageViewController的transitionStyle,所以此方法从不会被调用。 Apple Documentation不使用.pageCurl时也不能手动设置。苹果的文件说:

A spine location is only valid if the transition style is pageCurl. If the transition style is pageCurl, the default value for this property is min; otherwise, the default is none.

我试图添加一个方法被调用时的方向是横向:

func showBothSides(){ 
    let currentViewController = self.pageViewController!.viewControllers![0] as! PracticePageDataVC 
    let viewControllers: [UIViewController] = [currentViewController, currentViewController] 
    self.pageViewController!.setViewControllers(viewControllers, direction: .forward, animated: true, completion: {done in }) 
} 

但这返回错误:“'提供的视图控制器的数量(2)不符合要求的数量(1)所需的过渡'“

因此,基本上我正在寻找一种替代解决方案来并排显示两个视图控制器,同时仍然保持hor卡片之间的横向滚动转换。

回答

0

So basically I am looking for an alternative solution to show two view controllers side by side while still maintained the functionality of scrolling horizontally between cards

您有两种选择。

  • 你的“页”在UIPageViewController本身可以是自定义的父(容器)的视图控制器,其两个孩子的意见并排显示的一面。

  • 您可以完全放弃使用UIPageViewController,并使用水平分页滚动视图实现您自己的界面(这就是我们在页面视图控制器存在之前所做的)。

+0

谢谢!我害怕这个......但我想知道/希望有一个快速和简单的解决方案。感谢帮助! –

+0

请注意,这些方法都不会给你某种神奇的半尺寸页面滚动。页面的大小是滚动视图的大小。 – matt