外观风格
在 SwiftUI 视图的状态中跟踪页面
要添加自定义的 UIPageControl
,我们需要一种从 PageView
中跟踪当前页面的方法。
为此,我们将在 PageView
中声明一个 @State
属性,并传递一个绑定给此属性,直到 PageViewController
视图。 PageViewController
更新绑定来匹配可见页面。

第 1 步
给 PageViewController
添加一个 currentPage
的绑定的属性。
除了声明 @Binding
属性外,还要更新对 setViewControllers(_:direction:animated:)
的调用,并传递 currentPage
的绑定的值。
第 2 步
在 PageView
中声明 @State
变量,并在创建子 PageViewController
时将绑定传递给属性。
请记住使用 $
语法创建用状态来存储值的绑定。

第 3 步
通过更改 currentPage
的初始值,测试值是否通过绑定传递给了 PageViewController
。
给 PageView
添加一个按钮,让视图控制器跳转到第二个视图。

第 4 步
添加带有 currentPage
属性的文字视图,以便我们关注 @State
属性的值。
需要注意的是,当从一个页面滑动到另一个页面时,该值不会改变。

第 5 步
在 PageViewController.swift
中,让 coordinator
遵循 UIPageViewControllerDelegate
协议,然后添加 pageViewController(_:didFinishAnimating:previousViewControllers:transitionCompleted completed: Bool)
方法。
只要页面切换动画完成,SwiftUI 就会调用此方法,所以我们可以找到当前视图控制器的索引并更新绑定。
第 6 步
除数据源外,还将 coordinator
指定为 UIPageViewController
的代理。
在两个方向上连接绑定后,文字视图会在每次滑动后更新以显示正确的页码。