Skip to content

添加自定义的页面控件

在我们已经准备好给视图添加自定义的包装在 SwiftUI UIViewRepresentable 中的 UIPageControl 了。

第 1 步

创建一个新的 SwiftUI 视图文件,命名为 PageControl.swift。让 PageControl 遵循 UIViewRepresentable 协议。

UIViewRepresentableUIViewControllerRepresentable 类型拥有相同的生命周期,其方法与其基础 UIKit 类型相对应。

第 2 步

将文字框换成页面控件,把布局从 VStack 换成 ZStack

因为我们正在将页面计数和绑定传递给当前页面,所以页面控件已显示正确的值。

接下来让页面控件可以交互,以便用户可以点击一侧或另一侧在页面之间移动。

第 3 步

PageControl 中创建嵌套的 Coordinator 类型,然后添加一个 Coordinator() 方法来创建并返回一个新的 coordinator

由于 UIPageControl 这样的 UIControl 子类使用 arget-action 模式而不是代理,所以此 Coordinator 实现了 @objc 方法来更新当前页面的绑定。

第 4 步

添加 coordinator 作为 valueChanged 事件的目标,将 updateCurrentPage(sender:) 方法指定为要执行的操作。

第 5 步

最后,在 CategoryHome 中,用新的页面视图替换占位符特征图片。

第 6 步

现在来尝试所有不同的交互, PageView 展示了 UIKitSwiftUI 视图和控制器是如何协同工作的。

添加自定义的页面控件 has loaded