如何在uiviewcontroller / storyboard上使用uibutton在uipageviewcontroller中推进页面

时间:2016-11-30 23:04:25

标签: ios iphone swift3 uipageviewcontroller

我有一个非常具体的用例,我想知道是否有人处理过。我想添加一个"继续"我的第一次用户体验UIPageViewController上的按钮。这篇文章(Swift iOS: how to trigger next page using buttons)会触及您是否希望它出现在每个页面上,但我并未计划广泛使用。

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

我尝试将按钮作为segue连接到视图控制器,但是它将它呈现在PageViewController之外。我已经想过尝试按下右键左键滑动按钮点击,但我无法解决这个问题。

任何人都知道如何攻击在其中一个视图控制器上放置一个按钮并让它进入UIPageViewController中的下一个视图控制器?

这被标记为重复,但在SO上没有此问题的重复案例。几乎没有相似之处,但却没有。如果有,请链接。当前链接的版本是对类似问题的obj-c答案,没有解释如何将所需功能链接到视图控制器。我可以轻松地将这个答案作为全局按钮实现,但单个视图控制器按钮不在其中。

由于

编辑最终代码解决方案。

所以这是用swift 3编写的两部分解决方案。

在uipageviewcontroller数据源扩展中,翻页的func构建如下。

ArgumentNullException

单个视图控制器中的部件构建如下

return Enumerable

1 个答案:

答案 0 :(得分:1)

向上走视图控制器层次结构以查找页面视图控制器。当你找到它时,让它翻页:

@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
    }
}

根据this answer中的Objective-C版本,在navigateForward的扩展程序中实施UIPageViewController