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

4
我是使用Xcode 8默认的基于页面的应用程序,我现在卡在了尝试跳转到特定页面的步骤(而不是左右滑动翻页)。我在StackOverflow上找到了类似的问题,但大多数答案都建议使用以下方法:
 setViewControllers:direction:animated:completion

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

阅读完Xcode的基于页面的应用程序模板后,我认为这个功能可能有效:

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

然而,我不知道如何获取参数 storyboard: UIStoryboard,因为 ModelController(作为 UIPageViewControllerDataSource 的控制器)不是故事板的一部分。


https://dev59.com/D6Pia4cB1Zd3GeqPwlAZ#45026010 - Harshal Valanda
试一下这个:http://www.appcoda.com/uipageviewcontroller-storyboard-tutorial/ - Harshal Valanda
谢谢!我看了你的回答;使用setViewControllers时,只需要放入一个“页面”来显示,这是正确的吗? - swiftlycoderr
你可以将 ViewController 放入数组中,例如:[你的 View Controller]。 - Harshal Valanda
但是为什么它是一个数组呢?我以为屏幕上只能显示一个页面。你能解释一下setViewControllers方法具体做了什么吗?非常感谢。 - swiftlycoderr
请检查我的答案 - Harshal Valanda
1个回答

3

这个方法接收的视图控制器是动画完成后将可见的视图控制器。使用数据源提供额外的视图控制器,以供用户导航。

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

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

委托对象-一个符合 UIPageViewControllerDelegate 协议的对象-提供一些与外观相关的信息,并接收关于手势引发的转换的通知。

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

更多信息

苹果文档

Stackoverflow


这非常有帮助!您能否检查我是否正确理解了这一点:当我需要跳转到页面时,我可以提供一个或两个视图控制器,并仍然使用数据源对象来支持手势导航? - swiftlycoderr
是的,setViewControllers:direction:animated:completion 只设置可见的视图控制器。 - Harshal Valanda
现在我明白了,以后在这里发帖之前应该仔细阅读苹果的官方文档。谢谢! - swiftlycoderr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接