如何制作一个可重复使用的 SwiftUI 视图,其主体可以像列表一样填写?
How do I make a reusable SwiftUI View with a body I can fill in like List?
我想制作一个通用的 SwiftUI 视图,我可以插入和拔出我的控件。不过,不仅仅是传递数据,我还希望能够像这样将子视图传递给 List
:
List{
Text("This works")
Text("Hello World")
Text("This works")
}
MyClass {
Text("This works")
Text("Hello World")
Text("This works")
}
这可能吗?如果是这样,我将如何声明这个 class?
您可以使用 @ViewBuilder
属性 包装器:
struct CustomView<Content: View>: View {
var content: () -> Content
init(@ViewBuilder _ content: @escaping () -> Content) {
self.content = content
}
var body: some View {
VStack {
content()
}
}
}
struct ContentView: View {
var body: some View {
CustomView {
Text("hello")
Text("world")
}
}
}
我想制作一个通用的 SwiftUI 视图,我可以插入和拔出我的控件。不过,不仅仅是传递数据,我还希望能够像这样将子视图传递给 List
:
List{
Text("This works")
Text("Hello World")
Text("This works")
}
MyClass {
Text("This works")
Text("Hello World")
Text("This works")
}
这可能吗?如果是这样,我将如何声明这个 class?
您可以使用 @ViewBuilder
属性 包装器:
struct CustomView<Content: View>: View {
var content: () -> Content
init(@ViewBuilder _ content: @escaping () -> Content) {
self.content = content
}
var body: some View {
VStack {
content()
}
}
}
struct ContentView: View {
var body: some View {
CustomView {
Text("hello")
Text("world")
}
}
}