Skip to content

创建视图控制器的数据源

在几个简短的步骤中,我们已经做了很多工作:PageViewController 使用 UIPageViewControllerSwiftUI 视图中显示内容。现在启用滑动交互来从一个页面移动到另一个页面。

一个表示 UIKit 视图控制器的 SwiftUI 视图可以定义 SwiftUI 管理的 Coordinator 类型,并将其作为表示视图上下文的一部分提供。

第 1 步

PageViewController 中创建一个嵌套的 Coordinator 类。

SwiftUI 管理我们 UIViewControllerRepresentable 类型的 coordinator,并在调用上面创建的方法时将其作为上下文的一部分提供。

第 2 步

PageViewController 添加另外一个方法来创建 coordinator

SwiftUI 会在调用 makeUIViewController(context:) 方法之前调用 makeCoordinator() 方法,这样配置视图控制器时,我们可以访问 coordinator 对象。

我们可以用这个 coordinator 实现常见的 Cocoa 模式,例如代理、数据源以及通过 target-action 响应用户事件。

第 3 步

coordinator 中使用视图的页面数组初始化一个控制器数组。

coordinator 是存储这些控制器的好地方,因为系统只初始化它们一次,而且是在你需要它们来更新视图控制器之前。

第 4 步

Coordinator 类型遵循 UIPageViewControllerDataSource 协议,并且实现两个必要方法。

这两个方法建立了视图控制器之间的关系,因此我们可以在它们之间来回滑动。

第 5 步

coordinator 作为数据源添加给 UIPageViewController

第 6 步

回到 PageView.swift,打开实时预览,并测试走滑动的效果。

创建视图控制器的数据源 has loaded