SwiftUI实战之 List实现分页与组件复用效果Generics

目标

  • 实现针对不同数据结构的自动分页
  • 能够自定义界面效果

实现路径

需要用到Swift语言的高级特性Generics(范型)。Generics可以让我们的项目变得灵活,避免重复编写相同的代码,并以清晰抽象的方式提供代码表达力。

遇到问题

    1. 如何通过参数给范型初始化
    U.init(item: item.getShowDict())

U是一个范型,通过协议实现了init,通过where明确了U是个View

    1. 协议如何用范型
protocol PageModelProtocal:Identifiable{
    associatedtype T
    static func row_page() ->[T]
    // 获取下一页
    var id:UUID { get set }
    var name:String { get set }
    func next() ->[T]
    func getShowDict() ->[String:Any]
}

可以用associatedtype来解决

代码实现

让主页面代码变得简洁

你可能感兴趣的:(SwiftUI实战之 List实现分页与组件复用效果Generics)