如何使用 UIPageViewController 跳转到特定页面?

Posted

技术标签:

【中文标题】如何使用 UIPageViewController 跳转到特定页面?【英文标题】:How to jump to a particular page with UIPageViewController? 【发布时间】:2017-07-14 05:47:53 【问题描述】:

我正在使用 Xcode 8 的默认基于页面的应用程序,但我一直在尝试跳转到特定页面(而不是左右滑动来转动)。我在 *** 上发现了类似的问题,但答案大多建议使用这种方法:

 setViewControllers:direction:animated:completion

我不需要更改要显示的页数,那么我可以避免使用setViewControllers吗?

通读Xcode的基于页面的应用模板,我觉得这个功能可能会起作用:

func viewControllerAtIndex(_ index: Int, storyboard: UIStoryboard) -> DataViewController?

但是,我不知道从哪里获取参数 storyboard: UIStoryboard,因为 ModelController(用作 UIPageViewControllerDataSource 的控制器)不是情节提要的一部分。

【问题讨论】:

***.com/a/45026010/5461400 试试这个:appcoda.com/uipageviewcontroller-storyboard-tutorial 谢谢!我读了你的回答;使用 setViewControllers 时,是否可以只放入 1 个“页面”来显示? 您可以将 ViewController 放入数组中,例如:[Your View Controller] 但为什么它是一个数组?我以为屏幕上只能显示一页 你能解释一下 setViewControllers 方法到底是做什么的吗?非常感谢 【参考方案1】:

传递给此方法的视图控制器是动画完成后可见的视图控制器。使用数据源提供额外的视图控制器供用户导航。

定义页面视图控制器接口时,您可以一次提供一个(或一次提供两个,取决于书脊位置和双面状态)或使用数据源按需提供内容视图控制器。当一次提供一个内容视图控制器时,您使用 setViewControllers(_:direction:animated:completion:) 方法来设置当前的内容视图控制器。要支持基于手势的导航,您必须使用数据源对象提供视图控制器。

页面视图控制器的数据源负责按需提供内容视图控制器,并且必须符合 UIPageViewControllerDataSource 协议。

委托对象——一个符合 UIPageViewControllerDelegate 协议——提供一些与外观相关的信息并接收有关手势启动转换的通知。

setViewControllers([<#Your ViewControllers#>], direction: .forward, animated: true, completion: nil)

更多信息

Apple Docs

***

【讨论】:

这很有帮助!你能检查一下我是否理解正确:当我需要跳转到一个页面时,我可以一次提供一个或两个 viewController,并且仍然使用数据源对象来支持手势导航? yup .. setViewControllers:direction:animated:completion 只设置可见的视图控制器 现在对我来说很有意义,我可能应该在将来在这里发布之前彻底阅读苹果的官方文档。谢谢!

以上是关于如何使用 UIPageViewController 跳转到特定页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自动布局(约束)将子视图添加到 UIPageViewController?

如何使用 Scroll TransitionStyle 阻止 UIPageViewController 上的点击手势

如何更改 UIPageViewController 中的按钮名称

如何使用 UIPageViewController 实现像 iOS Photos 应用一样的照片滑动?

如何使用 UIPageViewController 跳转到特定页面?

故事板:如何使用故事板为 UIPageViewController 设置初始视图控制器?