思路
数据类型实现范型
数据管理通过class实现继承,通过init完成初始化
界面组件通过范型
实现
struct ListPageViewG<T:PageModelProtocal,U:PageRowProtocal>: View where U:View{
// 数据管理对象通过class的继承实现灵活更换
var pageMgr:PageMgrG<T>;
// 数据类型通过范型T
@State var items:[T] = []
@State var isLoading: Bool = false
@State var page: Int = 0
// 数据初始化
init(pmgr:PageMgrG<T>) {
self.pageMgr = pmgr
_items = State(initialValue: pageMgr.next())
}
var body: some View {
List(items){ item in
//self.pageRow
VStack{
//界面组件通过范型
U.init(item: item.getShowDict())
}.onAppear {
self.listItemAppears(item)
}
}
}
}
实例化调用
ListPageViewG<Author,AuthorPageRow2>(pmgr: PageMgrG<Author>())
更多SwiftUI教程和代码关注专栏
- 请关注我的专栏icloudend, SwiftUI教程与源码
https://www.jianshu.com/c/7b3e3b671970