如何使用 uibutton 在 uipageviewcontroller 中推进页面 uiviewcontroller/storyboard
How to advance page in uipageviewcontroller with uibutton on uiviewcontroller/storyboard
我有一个非常具体的用例,我想知道是否有人处理过。我想在我的第一次用户体验 UIPageViewController 上添加一个 "Continue" 按钮。这篇文章 (),如果你想让它出现在每一页上,但我不打算使用那么广泛。
我有一个 UIPageViewController 和 6 个视图控制器,我目前可以通过滑动来浏览它们。
我已经尝试将按钮连接到视图控制器作为一个 segue,但是它在 PageViewController 之外呈现。我曾想过尝试将从右到左的滑动推到按钮点击上,但我无法放弃这个想法。
有人知道如何攻击将单个按钮放在其中一个视图控制器上,并让它进入 UIPageViewController 中的下一个视图控制器吗?
这被标记为重复,但在 SO 上没有此问题的重复案例。很少有类似的,但没有类似的。如果有,请link它。当前 linked 版本是对类似问题的 obj-c 答案,没有解释如何 link 视图控制器所需的功能。这个答案我可以很容易地实现为全局按钮,但它不包括单个视图控制器按钮。
谢谢
编辑最终代码解决方案。
所以这是在 swift 3.
中编码的两部分解决方案
在uipageviewcontroller数据源扩展中,翻页函数构建如下
func goNextPage() {
let cur = self.viewControllers![0]
let p = self.pageViewController(self, viewControllerAfter: cur)
self.setViewControllers([p!], direction .forward, animated: true, completion: nil)
}
individual view controller中的piece构建如下
@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
}
}
在视图控制器层次结构中向上查找页面视图控制器。当你找到它时,让它翻页:
@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 版本,在 UIPageViewController
的扩展中实施 navigateForward
我有一个非常具体的用例,我想知道是否有人处理过。我想在我的第一次用户体验 UIPageViewController 上添加一个 "Continue" 按钮。这篇文章 (
我有一个 UIPageViewController 和 6 个视图控制器,我目前可以通过滑动来浏览它们。
我已经尝试将按钮连接到视图控制器作为一个 segue,但是它在 PageViewController 之外呈现。我曾想过尝试将从右到左的滑动推到按钮点击上,但我无法放弃这个想法。
有人知道如何攻击将单个按钮放在其中一个视图控制器上,并让它进入 UIPageViewController 中的下一个视图控制器吗?
这被标记为重复,但在 SO 上没有此问题的重复案例。很少有类似的,但没有类似的。如果有,请link它。当前 linked 版本是对类似问题的 obj-c 答案,没有解释如何 link 视图控制器所需的功能。这个答案我可以很容易地实现为全局按钮,但它不包括单个视图控制器按钮。
谢谢
编辑最终代码解决方案。
所以这是在 swift 3.
中编码的两部分解决方案在uipageviewcontroller数据源扩展中,翻页函数构建如下
func goNextPage() {
let cur = self.viewControllers![0]
let p = self.pageViewController(self, viewControllerAfter: cur)
self.setViewControllers([p!], direction .forward, animated: true, completion: nil)
}
individual view controller中的piece构建如下
@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
}
}
在视图控制器层次结构中向上查找页面视图控制器。当你找到它时,让它翻页:
@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 版本,在UIPageViewController
的扩展中实施 navigateForward