使用Protocol捕获SwiftUI视图:定义含View属性的协议实现复用视图
SwiftUI 可复用复合视图协议设计
我尝试编写一个协议,要求遵循该协议的类型具备View属性,或是拥有返回some View的@ViewBuilder方法,以此实现可复用的复合视图,能够根据需要展示的数据类型构建不同的子视图。
协议定义
protocol RowView { var leftSide: some View { get } var rightSide: some View { get } }
调用示例
struct Example: RowView { var id: Int var leftSide: some View { … } var rightSide: some View { … } } struct ContentView: View { let rows: [RowView] var body: some View { VStack { ForEach(rows, id: \.id) { row in HStack { row.leftSide row.rightSide } } } } }
注:原代码中
Foreach为拼写错误,已修正为SwiftUI标准的ForEach;同时补充闭包参数名row,提升代码可读性。
内容的提问来源于stack exchange,提问作者Mercutio
相关产品推荐
相关产品推荐

