2016-11-30 54 views
0

我有一个非常具体的用例,我想知道是否有人处理过。我想在我的第一次用户体验UIPageViewController上添加一个“继续”按钮。这篇文章(Swift iOS: how to trigger next page using buttons),触及如果你希望它在每一页上,但我不打算广泛使用。如何在uiviewcontroller/storyboard上使用uibutton在uipageviewcontroller中提前页面

我有一个UIPageViewController和6个viewcontrollers,我目前可以通过滑动浏览。

我试着将按钮连接到视图控制器作为一个segue,但它呈现在PageViewController之外。我想过只是按一下右键到左键轻扫按钮,但我无法退出。

任何人都有一个想法如何攻击把一个按钮放在其中一个视图控制器,并让它进展到UIPageViewController内的下一个视图控制器?


这被标记为重复,但在SO上没有这个问题的重复情况。有一些相似的,但没有像它。如果有,请链接它。当前链接的版本是类似问题的obj-c答案,没有解释如何将所需函数链接到视图控制器。这个答案我可以很容易地作为一个全局按钮来实现,但是一个视图控制器按钮不被它覆盖。

感谢


编辑为最终代码的解决方案。

因此,这是一个两部分的解决方案,迅速3.

在uipageviewcontroller数据源的扩展编码,翻转页面的FUNC建如下。

func goNextPage() { 
    let cur = self.viewControllers![0] 
    let p = self.pageViewController(self, viewControllerAfter: cur) 
    self.setViewControllers([p!], direction .forward, animated: true, completion: nil) 
    } 

在单个视图控制器的片如下

@IBAction func nextPageButtonWasTapped(_ sender: Any) { 
    var candidate: UIViewController = self 
    while true { 
    if let pageViewController = candidate as? MyUIPageViewController { 
     pageViewController.goNextPage() 
     break 
    } 
    guard let next = parent else { break } 
    candidate = next 
    } 
} 
+0

你的问题实际上是否与'UIPageControl'有关,或者是你的标题有错? –

+0

对不起,编辑到uipageviewcontroller –

+1

看看[这](http://stackoverflow.com/questions/11938149/turn-page-programmatically-in-uipageviewcontroller-when-using-uipageviewcontroll)回答你的问题。 –

回答

0

走到视图控制器结构,找到页面视图控制器内置。当你找到它,要求它翻开新的一页:

@IBAction func nextPageButtonWasTapped(_ sender: AnyObject?) { 
    var candidate: UIViewController = self 
    while true { 
     if let pageViewController = candidate as? UIPageViewController { 
      candidate.navigateForward() 
      break 
     } 
     guard let next = parentViewController else { break } 
     candidate = next 
    } 
} 

UIPageViewController扩展实现navigateForward的基础上,从this answer Objective-C的版本。

+0

感谢您的回复!我在扩展中构建了用于转到下一页的功能,但无法连接它们。我认为你让我走在正确的道路上。 当我实现这个,我得到一个错误回来说,“值的类型'UIViewcontroller”没有成员'goNextPage'“因此,它看起来像不是作为页面视图控制器投下候选变量 –

+0

我想出了什么这个问题在上面,我是以普通的页面视图控制器来投射,而不是自定义的视图控制器,它带有我已经创建的扩展和功能,现在我已经连接了,只需要获得扩展功能就可以工作。再次感谢! –